Ios 使用';解析';

Ios 使用';解析';,ios,parse-platform,notifications,livechat,Ios,Parse Platform,Notifications,Livechat,最近,我正在做一个构建基于ios的聊天应用程序的项目,比如“whatsapp”或“Line”。 我想为不同用户(通常在不同设备上)之间传输的消息建立一个数据库。 我找到了数据库和通知中心的“解析”解决方案 但我从文件中读到的是 “Parse”的通知是在一个大范围内广播广告或新闻 特定频道的订阅范围 我希望我弄错了,因为我不知道一对一聊天应用程序会以这种方式收到通知。我曾经想象过,在这种情况下,在这个应用程序的后端,一个用户订阅了一个用户(朋友)列表,该列表与其他用户不同。当一个命名为A的人向另

最近,我正在做一个构建基于ios的聊天应用程序的项目,比如“whatsapp”或“Line”。 我想为不同用户(通常在不同设备上)之间传输的消息建立一个数据库。 我找到了数据库和通知中心的“解析”解决方案

但我从文件中读到的是

“Parse”的通知是在一个大范围内广播广告或新闻 特定频道的订阅范围

我希望我弄错了,因为我不知道一对一聊天应用程序会以这种方式收到通知。我曾经想象过,在这种情况下,在这个应用程序的后端,一个用户订阅了一个用户(朋友)列表,该列表与其他用户不同。当一个命名为A的人向另一个命名为B的人发送消息时,B将收到新消息的通知,并强制应用程序在tableview中重新加载数据。结果证明,这非常耗时且效率低下。
在“Parse”的范围内,是否有一种有效的方法来实现通知和聊天功能?

我在我的应用程序中使用了一个名为JSQMessages的github库内置聊天功能。我还使用Parse作为后端。我对频道什么都不做。我所做的是创造一些逻辑。如果有针对对话对象的消息查询,如果没有,请将视图留空。创建第一条消息后,我们创建并保存对话和消息。每条消息都有一个“convalid”,它是会话的objectId。所以每一条信息都可以通过Covalid提取。对象的objectId永远不会更改

至于我处理推送通知的通知。我在安装数据库类中查询了会话中接收方数组中objectId为的用户,并确保它排除了当前用户。完成后,我会重新加载已发送通知中的消息,因为如果我在接收通过通知中心发送的通知的视图控制器中,它会触发一个方法。(我有一个应用程序横幅,它将在我自己的应用程序中充当推送通知横幅)

如果你想看看我做了什么,我会在这里加入一些代码,虽然它可能看起来很长,但这是我看到它工作的唯一方式

一些添加的代码

PFQuery *pushQuery = [PFInstallation query];
[pushQuery whereKey:@"userID" containedIn:messageReceiverObject[@"receivers"]];
[pushQuery whereKey:@"userID" notEqualTo:self.senderId];
NSDictionary *data = @{@"alert":[NSString stringWithFormat:@"@%@: %@", self.senderDisplayName, messageReceiverObject[@"lastMessage"]], @"badge":@"increment", @"content-available":@"1", @"sound":@"", @"m": @"message"};
[PFPush sendPushDataToQueryInBackground:pushQuery withData:data];

它的作用是查询数据库中的安装类,然后将推送数据从NSDictionary发送给这些用户。注意我是如何从查询中取消包含我自己的,因为在我刚刚调用
[self-loadMessages]之后加载所有我的消息

您的意思是a和B之间的对话有一个类似于123456的convalid,并且它们之间的每条消息都共享其自身属性convalid的相同值?另一个问题是,你的意思是,一旦A向B(或一群人)发送消息。那些家伙的应用程序会启动一个动作来重新加载数据吗?但是你如何准确地向这些人发送通知呢?我的意思是如何将通知发送给一个动态的群体(或单个群体)。我不太清楚。第一个问题……完全正确。第二个问题……我假设您熟悉PFInstallation,它是应用程序解析数据库中的推送数据类。当用户登录到我的应用程序时,我将与该currentUser关联的列(在[PFinstallation currentInstallation]的PFinstallation类中)中的a指针设置为[PFUser current](无论是谁),然后我设置另一个名为“userID”的列,即[PFUser current].objectId。至于向动态人群发送推送,请查看我添加的代码@BillI已经看到了添加的代码。我发现我忽略了这样一个事实:解析迟早会将通知发送给设备所有者(与帐户所有者相同)。我所要做的就是将通知推送到指定的设备。是这样吗?如果接收者检查了通知和消息,对话的状态会变为正常吗?太多了!是的,这部分是正确的,但您希望将每个设备与当前用户关联。此外,当用户注销时,您希望将这些字段设置为nothing,因为如果用户未登录,则不应接收推送。因此,当通过send发送消息到该设备或具有该用户对象或用户对象id的设备时,我很高兴能提供帮助。如果您能将此作为答案,我们将不胜感激@Bill您是否在parse上部署了一些云代码?这是聊天应用的一个好选择吗?@Kylecman为什么效率低下?任何值得编码的代码都是耗时的。你不会从3分钟的会议中得到专业的结果。我所说的“低效”是指解析会为每次使用保留一个朋友列表,这会导致存储效率低下。你说的每次使用都是什么意思?Parse只执行您告诉它的操作