需求
我們的app是使用心跳機制來保持用戶的登陸狀態,這樣才能收到服務器發來的消息和命令,但是當app進入后台以后大約3分鍾或者10分鍾之后app就會被系統掛起,用戶就會超時下線,這樣就必須保持app長時間的后台運行
原因
app一般有三種狀態前台運行中、進入后台以及掛起狀態,當我們按home鍵或者鎖屏鍵以后app進入后台運行,根據蘋果的官方解釋,蘋果允許app運行一小段時間在后台運行,做一些處理,大約是十分鍾左右的時間,十分鍾之后app被系統強行掛起,掛起所有的操作和線程,當用戶再點擊進入此app時才會啟動線程
方案
1、app內后台無線的播放音樂,Background Audio
2、后台不停的定位,Location Services
3、后台語音服務,voip
4、報刊雜志后台自動下載更新,Newsstand
.....
實現
我用的是后台定位,這是最簡單的方式了,經過測試一上午用戶都是在線的狀態,但是我的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];