如何使用 Quickblox IOS 更新已发送和已接收消息的读取和传递状态?

Posted

技术标签:

【中文标题】如何使用 Quickblox IOS 更新已发送和已接收消息的读取和传递状态?【英文标题】:How to update Read and Delivery status of sent and received messages using Quickblox IOS? 【发布时间】:2016-04-25 08:53:08 【问题描述】:

我已经使用 Quickblox 实现了一个聊天示例应用程序,并且我遵循了 Quckblox 提供的 SampleChat 应用程序(下面提供的网址)。但我想更新每条消息的阅读和传递状态。如何做到这一点?

    http://quickblox.com/developers/SimpleSample-chat_users-ios https://github.com/QuickBlox/quickblox-ios-sdk/tree/master/sample-chat

在链接 1 中,他们解释了一些代码,但我无法实现。

【问题讨论】:

Quickblox 已经提供已读和未读状态 没有实现这样的示例代码,我尝试实现但它不起作用 【参考方案1】:

您提供的链接中有read 和delivered 状态的文档。

为了使这个答案更明确,有几种方法可以将邮件标记为已读和已送达。对于交付标记,只有 XMPP 方式可用,请使用 QBChat 中的此方法:

/**
 *  Send "delivered" status for message.
 *
 *  @param message      QBChatMessage message to mark as delivered.
 *  @param completion   Completion block with failure error.
 */
- (void)markAsDelivered:(QB_NONNULL QBChatMessage *)message completion:(QB_NULLABLE QBChatCompletionBlock)completion;

对于读取标记,您可以使用 QBRequest 方法使用任一 REST 请求:

/**
 Mark messages as read.

 @note Updates message "read" status only on server.

 @param dialogID dialog ID.
 @param messagesIDs Set of chat message IDs to mark as read. If messageIDs is nil then all messages in dialog will be marked as read.
 @param successBlock Block with response instance if request succeded.
 @param errorBlock Block with response instance if request failed.
 @return An instance, which conforms Cancelable protocol. Use this instance to cancel the operation.
 */
+ (QB_NONNULL QBRequest *)markMessagesAsRead:(QB_NONNULL NSSet QB_GENERIC(NSString *) *)messagesIDs
                                    dialogID:(QB_NONNULL NSString *)dialogID
                                successBlock:(QB_NULLABLE void(^)(QBResponse * QB_NONNULL_S response))successBlock
                                  errorBlock:(QB_NULLABLE QBRequestErrorBlock)errorBlock;

或者QBChat的XMPP方法:

/**
 *  Send "read" status for message and update "read" status on a server
 *
 *  @param message      QBChatMessage message to mark as read.
 *  @param completion   Completion block with failure error.
 */
- (void)readMessage:(QB_NONNULL QBChatMessage *)message completion:(QB_NULLABLE QBChatCompletionBlock)completion;

如果您需要“实时”示例,请务必查看示例和文档。

【讨论】:

实际上我正在使用 QMChat View Controller ,QMServices 所以这些回调由他们处理。而我的疑问是如何知道这条微不足道的信息是否被删除或阅读。我想知道我的模型中的这个状态(QMChatSectionManager *chatSectionManager)或(QBChatMessage *message)怎么知道这个? 见 QBChat 代表。您可以随时订阅。 您好先生,我有一个要求,我想为每个快速 blox 用户上传个人资料图片,并从那里显示给其他想要与我看到的第一个用户创建聊天对话框的用户提供的示例内容示例。但在这里我的情况不同所以你能帮我吗 在示例中,他们正在上传具有内容类型的文件或更新现有文件。但是其他用户如何访问它以显示图像。即使我们提供 public 为“是”。其他用户如何看到实际用户的图片。以及当前用户必须如何上传图片以及在哪里上传?这么多的困惑先生,请帮助我 这是我的邮件 ID myiosgallery@gmail.com

以上是关于如何使用 Quickblox IOS 更新已发送和已接收消息的读取和传递状态?的主要内容,如果未能解决你的问题,请参考以下文章

Quickblox:我如何知道消息是不是已发送/接收?

有没有办法从 iOS 中的 QuickBlox 获取更新的徽章计数器?

QuickBlox iOS SDK 更新消息

如何在 quickblox (Swift, iOS, xcode) 中实现发送图片

QuickBlox:发送消息不会在具有相同登录名的其他设备上更新

如何在ios中更新quickblox用户密码