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 的 didEnterRegiondidExitRegion 委托方法。在这些方法中,您将设置本地通知。

请注意:从 iOS 10 开始,UILocalNotification 已弃用。请改用UNNotificationRequest

https://developer.apple.com/reference/uikit/uilocalnotification