注册

iOS接入环信客服时接受消息 messagesDidReceive:回调的问题

我是iOS接入环信客服,使用了环信 HelpDeskUI 中的 HDMessageViewController 来展示与客服交流的界面。当 HDMessageViewController 是当前界面的时候,客服发消息给客户端,是可以通过 messagesDidReceive:代理方法接受到消息的。但是如果 HDMessageViewController 被切换到不是当前界面的时候,这个代理方法不走,可是我能检测到未读消息个数不为零,也就是能收到消息。就是下面这个方法:
- (void)messagesDidReceive:(NSArray *)aMessages {

    for (HMessage *message in aMessages) {

        if ([self.conversation.conversationId isEqualToString:message.conversationId]) {

            [_conversation markAllMessagesAsRead:nil];

            [self addMessageToDataSource:message progress:nil];

            //有新消息处理未读红点

            [[NSNotificationCenter defaultCenter]postNotificationName:@"newMessageComeNotification" object:nil];

        }

    }

}
 
我的目的是想通过这个方法来拦截是否有消息过来,这样我在底部的 Tab 上展示未读消息的红点。
 
 
已邀请:

fuxiaopanda - bug

解决了,在入口类中设置 HChatClient 的代理,如下:
HChatClient.shared().chatManager.add(self, delegateQueue: nil)
并实现代理方法
extension AppDelegate: HChatClientDelegate,HChatDelegate {
    func messagesDidReceive(_ aMessages: [Any]!) {
        //有新消息处理未读红点
        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "newMessageComeNotification"), object: nil)
    }
}
就可以在全局接受到客服发送过来的消息了!

要回复问题请先登录注册