即使应用程序终止,iOS 也会更新位置

标签 ios background cllocationmanager

我正在尝试更新用户位置,即使应用已终止。我向我的 .plist 添加了 map 和背景模式 --> 位置更新,并且我设置了一个本地通知,该通知将在位置更新时触发。但它从未被解雇。我在 AppDelegat.h 中有这个:

@interface AppDelegate : UIResponder <CLLocationManagerDelegate>{
    CLLocationManager *locationManager;
}

并且在AppDelegate.m

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager requestAlwaysAuthorization];
    [locationManager startMonitoringSignificantLocationChanges];
}

    - (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations {

 UILocalNotification *notification = [[UILocalNotification alloc]init];
notification.repeatInterval = NSDayCalendarUnit;
[notification setAlertBody:@"Location update!"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:1]];
[notification setTimeZone:[NSTimeZone  defaultTimeZone]];
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
    }

我在模拟器上用高速公路驱动器作为位置测试了这段代码,但它不起作用。


编辑

如果我将代码放在 applicationDidEnterBackground 下,授权请求将在它打开后立即关闭,因为我正在使用 didFinishLaunchingWithOptions。我知道它是 24 小时跟踪位置,因为即使应用程序终止也有 GPS 符号。


编辑 2

在我的手机上测试后代码有效。它唤醒终止的应用程序并发送本地通知。它不适用于模拟器,但适用于现实生活(设备):)

最佳答案

看起来您正在使用 CLLocationManagerDelegate 的弃用函数:

-(void)locationManager:(CLLocationManager *)manager 
        didUpdateToLocation:(CLLocation *)newLocation 
        fromLocation:(CLLocation *)oldLocation { 
}

相反你应该实现

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations {
}

关于即使应用程序终止,iOS 也会更新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788865/

相关文章:

ios - 如何过滤检测到的人脸位置和大小?

ios - 如何更改tableView中分隔符的颜色?

ios7 - 由于不建议使用initCircularRegionWithCenter:radius:identifier :,因此如何在iOS 7中使用CLRegion?

swift - 使用操作获取 CLLocation 数据

android - 在Android上实现后台位置跟踪

ios - 使用解析获取用户位置

iphone - 来自 Hockey 的 CrashReport,使用 NSPlaceholderDictionary 的尴尬 Stacktrace

ios - 在 iPad 的纵向模式下,工具栏与横向模式保持相同的位置

ios - 在 ApplicationWillResignActive 中查看 Controller 变量

css - 有没有办法制作嘈杂且不规则的背景(使用CSS)?