IOS端 XMPP离线消息的接收

环境:Tigase服务器。



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



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


 from='[email protected]/balcony'>
  1

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


e.g:

-(void)getOfflineMsg{

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

    XMPPIQ *iq = [[XMPPIQ allocinitWithXMLString:[NSString stringWithFormat:@"1",jid]error:nil];

    [[self xmppStreamsendElement:iq];

}


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

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

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

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

你可能感兴趣的:(iOS,xmpp,tigase)