iOS知识点总结——XMPP 知识点
2015-12-10 本文已影响237人
dibadalu
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),如下:
还需要在代码里设置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数据存储模块使用。