我编写应用程序(用于auto),它在后台运行并使用gps(startUpdatingLocations)。 我知道关于plist和电池耗尽的bgModes。 我需要精确的GPS - 高精度。
应用程序正常工作,直到其他gps-app不进入前台。 一段时间后,由于用户打开另一个导航程序,iOs系统终止我的程序。 我可以通知用户"抱歉,但是os决定终止我的应用程序。再次重启"。 但它并不好。
那么,它是一种重启程序的方法(在后台)???
绝对标准的代码。没什么特别的
class "gps"
-(id)init
{
.....
locMan = [[CLLocationManager alloc] init];
locMan.delegate=self;
locMan.distanceFilter = kCLDistanceFilterNone;
locMan.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
.....
}
-(void)start
{
..............
if(sysVer>=8.0)
{
[locMan requestAlwaysAuthorization];
}
[locMan startUpdatingLocation];
if(sysVer>=6)
{
locMan.pausesLocationUpdatesAutomatically=NO;
}
............
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
... processing
}
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
... processing
}
答案 0 :(得分:0)
您需要启动重要更改通知,以使您的应用在被杀后重新启动。
来自Location and Maps Programming Guide
如果您使重要更改位置服务保持运行且您的iOS应用随后被暂停或终止,则当新位置数据到达时,该服务会自动唤醒您的应用。在唤醒时,应用程序将被置于后台,您将获得少量时间(大约10秒)来手动重新启动位置服务并处理位置数据。