要求 -我正在构建一个超本地应用程序,它将根据用户的位置向用户提供优惠。在应用程序中,我可以获取他的当前位置并相应地显示优惠,但我现在需要的是根据他的位置向用户发送推送通知。所以我想找出用户的位置并根据他的位置发送报价。
我已经阅读了有关重大更改位置服务的Apple 文档,但是这个答案是说一旦应用程序被杀死,它将无法工作。
我还阅读了有关跟踪用户位置的信息,但这对我不起作用。我在后台收到的更新不超过 5 次。
我当前的代码在viewDidLoad
-
if (self.locationManager == nil)
{
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.delegate = self;
self.locationManager.allowsBackgroundLocationUpdates = true;
self.locationManager.pausesLocationUpdatesAutomatically = false;
if ([CLLocationManager authorizationStatus] != AVAuthorizationStatusAuthorized) {
[self.locationManager requestAlwaysAuthorization];
}
}
[self.locationManager startUpdatingLocation];
我的委托方法看起来像这样 -
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
if (UIApplication.sharedApplication.applicationState == UIApplicationStateActive) {
// Get updated data according to location
} else {
// Send location to server
}
}
请提出一些合适的方法,我可以生活在1公里左右的精度。
另一种方法 -
我可以在“后台模式-后台获取”中获取用户的位置
fetchNewDataWithCompletionHandler:
吗?我可以使用静默推送通知获取用户的位置
application:didReceiveRemoteNotification:fetchCompletionHandler:
吗?):根据这个答案不可能