ios:如何在后台终止应用程序时重启应用程序?

时间:2015-02-19 08:30:56

标签: ios background gps location

我编写应用程序(用于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
}

1 个答案:

答案 0 :(得分:0)

您需要启动重要更改通知,以使您的应用在被杀后重新启动。

来自Location and Maps Programming Guide

  

如果您使重要更改位置服务保持运行且您的iOS应用随后被暂停或终止,则当新位置数据到达时,该服务会自动唤醒您的应用。在唤醒时,应用程序将被置于后台,您将获得少量时间(大约10秒)来手动重新启动位置服务并处理位置数据。