IOS端 XMPP离线消息的接收

环境:Tigase服务器。



问题描述:离线后别人给你发消息,然后上线后没有收到消息。因为Andorid的可以收到消息,确认为IOS端的问题而不是Server端的问题。



解决流程:xmppStreamDidAuthenticate之后和“下线”之前,都要向Server发出以下数据包,(注意from一定要是自己的JID)


<presence from='[email protected]/balcony'>
  <priority>1</priority>
</presence>

之后的离线消息就会以普通消息的方式逐条发送给你。


e.g:

-(void)getOfflineMsg{

    NSString *jid = [[NSUserDefaults standardUserDefaultsobjectForKey:@"kXMPPmyJID"];

    XMPPIQ *iq = [[XMPPIQ allocinitWithXMLString:[NSString stringWithFormat:@"<presence from='%@'><priority>1</priority></presence>",jid]error:nil];

    [[self xmppStreamsendElement:iq];

}


当然,这种方法的前提是要Server有以下特性

<feature var='http://jabber.org/protocol/msgoffline'/>

资料来自: http://xmpp.org/extensions/xep-0160.html

http://xmpp.org/extensions/xep-0013.html   

你可能感兴趣的:(IOS端 XMPP离线消息的接收)