XMPP的使用可以參考 上帝說:要約炮!于是有了XMPP by 作者 伯恩的遺產
- iOS8之后,應用需要注冊應用,獲得用戶授權,才能接受本地通知。
關鍵代碼如下:
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文件
還需要在代碼里設置socket在后臺運行的BOOL值為YES,參考如下:
_xmppStream.enableBackgroundingOnSocket = YES;
此時真機上socket已經可以后臺運行了,但是模擬器沒法后臺運行。
3.XMPP總結
- 1.XMPP是一個即時通訊的傳輸協議,傳輸的數據格式是xml格式
- 2.XMPP是通過Socket開發的,基于TCP/IP協議, 跟服務器交互的核心類是XMPPStream類。XMPPStream里面有個GCDAsynSocket對象,對C語言的CFReadStreamRef(輸入流)、CFWriteStreamRef(輸出流)進行了封裝。
- 3.XMPP是基于模塊開發的,eg:
自動連接模塊XMPPReconnect 、
電子名片模塊XMPPvCardTempModule、
頭像模塊XMPPvCardAvatarModule、
花名冊模塊XMPPRoster、
消息模塊XMPPMessageArchiving,
在使用以上模塊有時候需要配合其對應的CoreData數據存儲模塊使用。