我们知道,当app进入后台以后大约3分钟或者10分钟之后app就会被系统挂起。
最近有个项目需求:App作为websocket的服务端,其他app或网页通过websocket连接并调用服务端的接口。那么就要求我的App必须在进入后台后也能一直运行,不能被系统挂起或杀死。
查找了很多资料,一般有以下几种解决方案:
1、不断向系统申请后台运行时间,即可让App一直在后台运行,socket也不会断开;
https://www.jianshu.com/p/d62c6d3ae8ff
2、VoIP,远程消息推送,可以在后台唤醒App,并获得30s的后台运行时间;微信收款到账语音播报就是这个方法:
http://mp.weixin.qq.com/s/yYCaPMxHGT9LyRyAPewVWQ
注意:iOS10开始,苹果不再支持VoIP应用的后台socket长连接,需要使用苹果推荐的pushkit,降低app耗电。
3、background mode勾选Audio,后台播放无声音乐,但耗电是一个问题。不是音乐应用,可能通不过苹果审核。
4、background mode勾选Location,后台开启定位功能,同样耗电是一个问题,可能还耗流量,并且不是定位应用,可能通不过审核。
5、APNS
网友评论