iOS 上这些基于地理位置的通知方法有何不同?
What's the difference of these geo-based notification approaches on iOS?
我正在寻找一种在 iOS 上实现基于地理位置的通知的方法。
我找到了两种方法,但我无法弄清楚哪一种是最好的和区别。
1: 使用 CLLocationManager 的 startMonitoring
就像这个教程。
https://www.raywenderlich.com/136165/core-location-geofencing-tutorial
2: 使用 CLLocationManager 的 startMonitoring 和 UILocalNotification 的区域。
喜欢这个代码:
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.alertBody = [NSString stringWithFormat:@"Hello!"];
localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 1;
CLCircularRegion *region = nil;
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(geoPoint.latitude,
geoPoint.longitude);
if (CLLocationCoordinate2DIsValid(location)){
region = [[CLCircularRegion alloc] initWithCenter:location
radius:50.0
identifier:@"region1"];
region.notifyOnExit = NO;
localNotif.region = region;
localNotif.regionTriggersOnce = YES;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
} else {
NSDictionary *info = @{NSLocalizedDescriptionKey:@"Invalid coordinate info."};
NSError *error = [NSError errorWithDomain:@"InvalidCLLocationError"
code:1999
userInfo:info];
}
为了在关闭应用程序时显示通知,您应该使用 UILocalNotification
方法。这是因为 CLLocationManager 的 startMonitoring
将在您的应用关闭后停止工作。使用 UILocalNotification
.
时,您基本上是在设置地理围栏
您必须实施 CLLocationManager 的 didEnterRegion
和 didExitRegion
委托方法。在这些方法中,您将设置本地通知。
请注意:从 iOS 10 开始,UILocalNotification
已弃用。请改用UNNotificationRequest
。
https://developer.apple.com/reference/uikit/uilocalnotification
我正在寻找一种在 iOS 上实现基于地理位置的通知的方法。
我找到了两种方法,但我无法弄清楚哪一种是最好的和区别。
1: 使用 CLLocationManager 的 startMonitoring 就像这个教程。 https://www.raywenderlich.com/136165/core-location-geofencing-tutorial
2: 使用 CLLocationManager 的 startMonitoring 和 UILocalNotification 的区域。
喜欢这个代码:
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.alertBody = [NSString stringWithFormat:@"Hello!"];
localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 1;
CLCircularRegion *region = nil;
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(geoPoint.latitude,
geoPoint.longitude);
if (CLLocationCoordinate2DIsValid(location)){
region = [[CLCircularRegion alloc] initWithCenter:location
radius:50.0
identifier:@"region1"];
region.notifyOnExit = NO;
localNotif.region = region;
localNotif.regionTriggersOnce = YES;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
} else {
NSDictionary *info = @{NSLocalizedDescriptionKey:@"Invalid coordinate info."};
NSError *error = [NSError errorWithDomain:@"InvalidCLLocationError"
code:1999
userInfo:info];
}
为了在关闭应用程序时显示通知,您应该使用 UILocalNotification
方法。这是因为 CLLocationManager 的 startMonitoring
将在您的应用关闭后停止工作。使用 UILocalNotification
.
您必须实施 CLLocationManager 的 didEnterRegion
和 didExitRegion
委托方法。在这些方法中,您将设置本地通知。
请注意:从 iOS 10 开始,UILocalNotification
已弃用。请改用UNNotificationRequest
。
https://developer.apple.com/reference/uikit/uilocalnotification