用户进入特定区域时如何获取本地通知提供的 ios

Posted

技术标签:

【中文标题】用户进入特定区域时如何获取本地通知提供的 ios【英文标题】:How to get local notification when user enters into specific region provided ios 【发布时间】:2014-05-08 07:41:04 【问题描述】:

我正在从事这样一个项目,其中应用程序执行以下操作:

1.获取用户当前位置。 2. 当用户进入或靠近我提供的特定位置时获取本地通知。

我所做的是:

我已经下载了区域示例代码(苹果提供)以使用 ios 核心定位框架找出我当前的位置。它工作正常。下面是代码:

// 基于地图视图的中心创建一个新区域。

CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(regionsMapView.centerCoordinate.latitude, regionsMapView.centerCoordinate.longitude);
CLRegion *newRegion = [[CLRegion alloc] initCircularRegionWithCenter:coord radius:2.0  identifier:[NSString stringWithFormat:@"%f, %f", regionsMapView.centerCoordinate.latitude, regionsMapView.centerCoordinate.longitude]];

现在,我的问题是如何添加具有纬度和经度的特定区域以获得通知?

非常感谢您的帮助。任何人都知道任何示例或教程。

【问题讨论】:

【参考方案1】:

SetSDK 应该有助于让这变得超级简单,https://cocoapods.org/pods/SetSDK。它允许您设置用户到达和离开位置的通知。它目前可以即时了解这些位置,但即将发布的版本包括任意位置订阅。您的应用程序将收到通知,您可以从那里执行您想要的任何处理程序。它看起来像这样,

SetSDK.instance.onArrival(to: .any)  newArrival in
    /* Compare the new location with the one of interest (50m) */
    if newArrival.location.distance(from: placeOfInterest) < 50 
      /* do your things here */
    

【讨论】:

【参考方案2】:

探索 iOS Core Location 框架提供的基于位置的服务。

这里有一些很好的教程。可能对你有帮助

Geofencing with Core Location Geofencing on iOS iOS Geofencing API Tutorial Using Core Location Framework

【讨论】:

感谢您的回复,当前位置和获取通知对我来说工作正常。但我对如何创建具有纬度和经度的特定位置区域感到困惑。请帮帮我。 @user2704161 : 在上面的教程中,他们提到了如何添加特定区域进行监控 感谢 Rahul Patel,我已经下载了代码并运行了该代码。如果我单击添加地理围栏,则其显示区域监控不适用于此类。如何摆脱它? 我认为 regionMonitoringAvailable 在 iOS 7 中已被弃用。 请查看developer.apple.com/library/ios/documentation/CoreLocation/…【参考方案3】:

1.获取用户当前位置。

我在博客和 Github 上发布了关于如何获取 iOS 7 位置的长篇文章和示例代码。

Background Location Update Programming for iOS 7

Github Project: Background Location Update Programming for iOS 7

2。当用户进入或靠近我提供的特定位置时获取本地通知。

您必须使用 startMonitoringForRegion 来监控您创建的区域。

CLLocationCoordinate2D regionCentre = CLLocationCoordinate2DMake(latitude, longitude);
CLCircularRegion *region= [[CLCircularRegion alloc] initWithCenter:regionCentre radius:radius identifier:@"Name"];        
[locationManager startMonitoringForRegion:region];

从 locationManager 委托,您将在您进入区域时收到通知。

-(void)locationManager:(CLLocationManager *)manager 
    didEnterRegion:(CLRegion *)region
NSString* message = [NSString stringWithFormat:@"Message";        
UIApplicationState state = [[UIApplication sharedApplication] applicationState];

if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)

UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [NSDate date];
NSTimeZone* timezone = [NSTimeZone defaultTimeZone];
notification.timeZone = timezone;
notification.alertBody = message;
notification.alertAction = @"Show";
notification.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] scheduleLocalNotification:notification];


【讨论】:

以上是关于用户进入特定区域时如何获取本地通知提供的 ios的主要内容,如果未能解决你的问题,请参考以下文章

当用户到达特定位置时向用户发送推送通知 [IOS]

最小化应用程序iOS时如何每隔特定N天推送本地通知?

当本地通知在特定时间触发时如何在 xamarin ios 中播放警报音

本地通知在 iOS 10.3.1 中不起作用

如何在 iOS 中禁用/启用本地通知?

IOS获取本地通知的属性