需求 我們的app是使用心跳機制來保持用戶的登陸狀態,這樣才能收到伺服器發來的消息和命令,但是當app進入後臺以後大約3分鐘或者10分鐘之後app就會被系統掛起,用戶就會超時下線,這樣就必須保持app長時間的後臺運行 原因 app一般有三種狀態前臺運行中、進入後臺以及掛起狀態,當我們按home鍵或者 ...
需求
我們的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];