需求服务器
咱们的app是使用心跳机制来保持用户的登录状态,这样才能收到服务器发来的消息和命令,可是当app进入后台之后大约3分钟或者10分钟以后app就会被系统挂起,用户就会超时下线,这样就必须保持app长时间的后台运行app
缘由测试
app通常有三种状态前台运行中、进入后台以及挂起状态,当咱们按home键或者锁屏键之后app进入后台运行,根据苹果的官方解释,苹果容许app运行一小段时间在后台运行,作一些处理,大约是十分钟左右的时间,十分钟以后app被系统强行挂起,挂起全部的操做和线程,当用户再点击进入此app时才会启动线程atom
方案线程
一、app内后台无线的播放音乐,Background Audio代理
二、后台不停的定位,Location Servicesip
三、后台语音服务,voipit
四、报刊杂志后台自动下载更新,Newsstandio
.....import
实现
我用的是后台定位,这是最简单的方式了,通过测试一上午用户都是在线的状态,可是个人app是企业级的应用不须要上线,因此没管审核的问题,此解决方案可能形成没法经过苹果的审核
引入头文件
#import <CoreLocation/CoreLocation.h>
在AppDelegate.m内添加变量
@property(nonatomic,strong)CLLocationManager * locationManager;
app启动后建立实例,设置代理
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate =self;
app进入后台之后,持续定位
[self.locationManager startUpdatingLocation];