获取后台位置而不使用位置服务IOS

时间:2014-01-09 19:22:28

标签: ios objective-c background cllocationmanager

我的应用被拒绝了,因为

  

我们发现您的应用使用后台模式,但不包含要求该模式持续运行的功能。此行为不符合App Store审核指南。

     

我们注意到您的应用在Info.plist中的UIBackgroundModes键中声明了对位置的支持,但不包含需要持久位置的功能。

我需要在后台跟踪用户位置,以便在用户靠近应用程序中的某张图片时触发通知。这就是我在.plist上使用背景模式键的原因

这是我如何初始化我的locationManager

_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
_locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
_locationManager.distanceFilter = 1000; // Will update evert 1 KM.
_locationManager.activityType = CLActivityTypeFitness;
_locationManager.pausesLocationUpdatesAutomatically = YES;
[_locationManager startUpdatingLocation];

我正在使用didUpdateToLocation在后台接收位置。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    if (_currentLocation == nil){
        self.currentLocation = newLocation;
    }else{

        if([self.currentLocation distanceFromLocation:newLocation]){
            [self getNearPicturesMethod:newLocation];
        }
    }

}

他们指出我应该使用“startMonitoringSignificantLocationChanges”,但是如果我删除后台密钥(他们想要什么),如果它位于前台,应用程序将不再接收位置更新,只有当用户打开它时它们才会出现这对我不起作用。

PS。我阅读了相关问题,但似乎没有人解决这个问题或提供解决方法。

1 个答案:

答案 0 :(得分:0)

您的应用会因重大位置变化而醒来。您不需要为其设置后台位置模式键。区域边界监测也是如此。

对于您的情况,我认为您更可能想要为最近的图片设置区域,然后等待划分边界。

使用重要的位置更改来更新最近的图片并将您的区域重置为这些图片。

这将按预期工作,符合Apple文档的指导原则,并且如果有的话,对用户的电池影响很小。