XMPP的使用可以參考 上帝說:要約炮!于是有了XMPP by 作者 伯恩的遺產(chǎn)
- iOS8之后,應(yīng)用需要注冊應(yīng)用,獲得用戶授權(quán),才能接受本地通知。
關(guān)鍵代碼如下:
if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:setting];
}
- 在iOS7以及iOS7之前,socket是不支持后臺運行(被掛起了),需要在plist做配置(屬性:Required background modes),如下:

plist文件
還需要在代碼里設(shè)置socket在后臺運行的BOOL值為YES,參考如下:
_xmppStream.enableBackgroundingOnSocket = YES;
此時真機上socket已經(jīng)可以后臺運行了,但是模擬器沒法后臺運行。
3.XMPP總結(jié)
- 1.XMPP是一個即時通訊的傳輸協(xié)議,傳輸?shù)臄?shù)據(jù)格式是xml格式
- 2.XMPP是通過Socket開發(fā)的,基于TCP/IP協(xié)議, 跟服務(wù)器交互的核心類是XMPPStream類。XMPPStream里面有個GCDAsynSocket對象,對C語言的CFReadStreamRef(輸入流)、CFWriteStreamRef(輸出流)進行了封裝。
- 3.XMPP是基于模塊開發(fā)的,eg:
自動連接模塊XMPPReconnect 、
電子名片模塊XMPPvCardTempModule、
頭像模塊XMPPvCardAvatarModule、
花名冊模塊XMPPRoster、
消息模塊XMPPMessageArchiving,
在使用以上模塊有時候需要配合其對應(yīng)的CoreData數(shù)據(jù)存儲模塊使用。