【发布时间】:2014-01-28 12:53:18
【问题描述】:
我的应用被拒绝了,因为
我们发现您的应用使用后台模式,但不包含需要该模式持续运行的功能。此行为不符合 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。我阅读了相关问题,但似乎没有人解决此问题或提供解决方法。
【问题讨论】:
-
你是如何测试这个的?您的应用应该在没有后台模式的情况下唤醒重大更改的位置更新,但此类事件在模拟器上可能不可靠。
-
我只能在真实设备中创建一次行为,在模拟器中永远无法工作;有什么想法吗?
-
也许您可以发布启动和停止重大更改位置监控的代码?此外,该应用程序将在哪些领域使用?大城市、小城市还是乡村? Wifi 网络和手机信号塔密度会影响非 GPS 定位服务的准确性。
-
另外,(来自重大更改位置文档):“应用程序可以在设备从之前的通知移动 500 米或更多时收到通知。它的通知频率不应超过每 5 次分钟。如果设备能够从网络中检索数据,则位置管理器更有可能及时传递通知。您在使用该设备的测试中走了多远?您在每个地点等了多长时间?
标签: ios objective-c background cllocationmanager