2015-03-02 52 views
1

使用定位服务从苹果拒绝我使用下面的代码与位置我的应用程序在后台

self.locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy=500; 
    locationManager.distanceFilter=kCLLocationAccuracyKilometer; 


#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 

    if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) 
    { 
     [locationManager requestAlwaysAuthorization]; 
    } 
#else 


#endif 

    [locationManager startUpdatingLocation]; 

    //Disable auto location pause in background 
    if ([self.locationManager respondsToSelector:@selector(pausesLocationUpdatesAutomatically)]) 
    { 
     self.locationManager.pausesLocationUpdatesAutomatically = NO; 
    } 

而在我的plist文件我用“应用程序注册了位置更新”为“所需的背景模式”。但苹果拒绝了我的申请,并表示如果您在后台使用位置信息,则必须使用实时位置更新。

请让我知道我需要使用,如果我想在距离过滤器的背景中使用位置。

回答

0

如果您希望在没有“位置更新的应用寄存器”后台模式的情况下进行后台更新,则必须使用startMonitoringSignificantLocationChanges。它应该每隔几公里就会在后台生成位置更新。 没有其他方式在后台获取位置更新(无背景模式)。

Apple documentation

startMonitoringSignificantLocationChanges不依赖于过滤器:

它不依赖于distanceFilter属性中的值来生成事件。

编辑:

正如我在评论中提到的,你可以使用背景音乐,如RunKeeper应用程序一样。它仍然是一个灰色地带,这意味着有一个很大的机会,你的应用程序将被拒绝还是

CoreMotion updates in background state

+0

感谢您的答复。我正在计算在iPhone5s设备下运动传感器的步骤,所以我需要在后台运行我的应用程序。有没有其他方法可以做到这一点。 – 2015-03-03 17:38:03

+0

是的,有一些技巧,如在后台运行音乐。但结果与位置更新相同:您仍然需要启用背景模式=>它可能会被苹果拒绝。 – 2015-03-03 17:42:31

+0

编辑我的回答 – 2015-03-03 18:04:42