对于使用socket通信的应用程序,常常希望App位于后台时仍然可以进行网络通信,这在iOS8和以后的版本是被默认允许的,socket可以直接在后台运行,而对于iOS8之前的版本就不行,需要进行两步设置使得socket后台运行。
这里以XMPP的socket为例,为了实现后台接收到消息后发送推送通知,需要以下两步设置:
①打开info.plist,添加下面的键值对:
Required background modes = App provides Voice over IP services
②配置XMPPStream的enableBackgroundingOnSocket属性为YES:
_xmppStream.enableBackgroundingOnSocket = YES;
需要注意的是,在iOS7模拟器上,这样设置完后仍然不能实现socket后台运行,这是模拟器的BUG,在真机上可以实现。