如何在Quickblox的群聊中禁用特定用户的聊天推送

时间:2016-05-05 18:44:08

标签: ios chat quickblox

我想对仍未接受该群组请求的用户禁用推送通知。

1 个答案:

答案 0 :(得分:3)

注意

根据我使用quickblox框架2.7及以下版本的经验,这个答案是有效的。由于quickblox经常发布更新版本的框架,因此您可能会在将来找到更好的API。直到那时你可以使用这种方法。

<强>答案

我不认为你可以使用Quickblox api为组中的特定用户禁用推送通知。

当您向某个群组发送消息(QBChat)时,QBChatDialog中的所有人都会收到包含发送给他/她自己的人的消息。

有一个隐私列表可以阻止用户接收来自特定用户的消息,但需要从用户端发起消息。所以我不认为这会对你有所帮助。此功能可用于阻止某人/群组向用户发送消息。

<强>解决方案

您最好的选择是,在用户接受群组请求之前,不要将用户添加到群组。实现您自己的逻辑,将请求发送给组中的每个用户,并在他/她接受请求时继续添加用户。

1&GT;使用特定自定义对象发送带有组ID,组类型,组名和所有其他必要数据的QBChat消息,这将使其与其他QBChat消息区别于组中的所有用户。

2 - ;在收到此特殊消息时,显示一个特定的UI来处理它,就像一个警告&#34;你想加入该组吗?&#34;和按钮接受或拒绝

3&GT;在点击接受时,对您自己的服务器进行WS调用,并在您的服务器api中将用户添加到他已同意加入的特定组。 因为您已经使用包含对话框信息的对象填充了QBChat消息,所以您应该能够轻松地通知您的服务器用户已加入哪个组。

一旦用户加入群组,他将继续收到群组中的所有消息

修改

以下是评论中问题的详细解答:)

我非常肯定你会问这个问题:)

为了将占用者id添加到现有的QBChatDialog组,我们使用了Quickblox的其余api。记得我告诉过你不要将所有参与者最初添加到组中,在他们接受加入组之后逐个添加它们?当用户接受加入组时,我们调用我们的rest api,然后调用quickblox api并将当前用户ID添加到组:)

您可以在quickblox的API部分轻松找到api。 如果你发现它给我的时间到星期一,那么请问我的API开发人员并用同样的方式更新你的

这种方法有 CATACH

QB文档明确指出,只有该组的所有者才能将该成员添加到该组中。这意味着仅仅因为你有一个REST API,你就无法将用户添加到组中。您需要拥有组所有者的有效会话ID。您将在登录时获得会话ID,我相信您非常了解它:)

现在我将如何获得群组所有者会话ID?

这是我们遵循的方法。我们已经预见到在我们开始项目之前可能会出现这样的问题:)

当用户使用我们的应用程序注册时,我们将其用户名和密码保存在我们的服务器数据库中并生成随机用户名和密码,并使用该用户名和密码创建一个Quickblox帐户,我们保存此快速blox用户名,quickblox密码和该用户的quickblox用户ID:)

因此,尽管注册实际上处理了两台服务器,但用户总是觉得他正在处理一台服务器而且他仍然认为他正在使用他的用户名和密码登录聊天。

但实际上,当用户使用他的用户名和密码在登录响应中登录app时,我们会获得服务器用于创建帐户的quickblox用户名和quickblox密码。收到它后,应用程序使用QB框架使用该用户名和密码登录quickblox帐户:)

这样用户永远不会知道他的quickblox用户名和密码以及用户ID :)也给我们很多控制权:))

那就是说了:)现在当用户创建一个组并发出一个包含自定义对象的特殊QBChat消息时,在该自定义对象中以及对话框的细节他还发送了他的quickbloxuserid:)

现在当收到特殊QBChat的用户接受请求时,我们提取对话框ID(他打算加入的对象)group_owner_id(创建对话框并发出此特殊消息的用户的ID)并将其发送给我们休息api和他自己的id:)

一旦API接收到组所有者ID,它就会从其数据库中记录QB用户名和密码并使用该数据库记录并获取有效的会话ID,最后将用户添加到具有该会话ID的组。

注意:Quickblox允许用户一次登录多个设备,这意味着它可以为用户提供多个有效的会话ID。

希望我明白我的观点:)快乐编码。