背景中的UILocalNotification - iOS 9

时间:2015-10-20 16:29:02

标签: ios objective-c ios9 cllocationmanager uilocalnotification

我有一个导航应用,在获取位置更新时使用UILocalNotification

当应用程序在iOS 9设备上进入后台时(锁定屏幕/按下主页按钮) - 它会停止收到通知。适用于iOS 8设备。

我在应用程序处于前台时收到通知,但不在后台(当然,这更重要)。

代码看起来像这样:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
{
    CLLocation *currLocation = [locations lastObject];

    CLLocationDistance dist = [currLocation distanceFromLocation:[[CLLocation alloc] initWithLatitude:self.coordinate.latitude longitude:self.coordinate.longitude]];

    BOOL gotToDestination = dist < 60;

    if (gotToDestination) {
        UILocalNotification* n1 = [[UILocalNotification alloc] init];
        n1.alertBody = [NSString stringWithFormat:@"You have arrived!"];
        n1.soundName = UILocalNotificationDefaultSoundName;
        n1.fireDate = [NSDate date];
        [[UIApplication sharedApplication] presentLocalNotificationNow:n1];
    }
}
  • 我一直要求授权
  • 我检查了背景模式 - &gt;位置更新
  • 我已注册用户通知

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

好的,我已经得到了它。

问题不在UILocalNotification,而在于位置管理员。

从iOS 9开始,CLLocationManager有一个新的BOOL属性 - allowsBackgroundLocationUpdates,默认为NO。

如果您想继续获取位置更新,可能需要将其设置为YES。

这解决了我的问题。