如何检索离线消息openfire XMPP?

时间:2016-08-03 11:27:29

标签: ios objective-c xmpp openfire

我使用Openfire和XMPP成功实现了群组聊天。

现在,当用户A向离线的用户B发送消息时,那么当用户B在线时,如何从服务器检索所有未读/离线消息。

我正在做这些东西加入房间,但它从服务器获取所有消息:

- (void) getJoinRoom
{
    XMPPRoomMemoryStorage *roomStorage = [[XMPPRoomMemoryStorage alloc] init];
    XMPPJID *roomJID = [XMPPJID jidWithString:chatWithUser];

    xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomStorage
                                                 jid:roomJID
                                       dispatchQueue:dispatch_get_main_queue()];

    [xmppRoom activate:self.xmppStream];
    [xmppRoom addDelegate:self
            delegateQueue:dispatch_get_main_queue()];

    [xmppRoom joinRoomUsingNickname:self.xmppStream.myJID.user
                            history:nil
                           password:nil];
}

如何获取这些离线消息?

1 个答案:

答案 0 :(得分:0)

根据XMPP标准,只有一条聊天消息符合离线存储条件,因此类型=“groupchat”的消息永远不会存储在XMPP服务器的离线存储中。

根据MUC XEP,如果用户离线,则不再计入该会议室的参与者。因此,当用户上线时,他必须通过向房间发送在线信息包来加入房间。