我有一个导航应用,在获取位置更新时使用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];
}
}
非常感谢您的帮助。
答案 0 :(得分:1)
好的,我已经得到了它。
问题不在UILocalNotification
,而在于位置管理员。
从iOS 9开始,CLLocationManager
有一个新的BOOL属性 - allowsBackgroundLocationUpdates
,默认为NO。
如果您想继续获取位置更新,可能需要将其设置为YES。
这解决了我的问题。