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

时间:2014-05-08 07:41:04

标签: ios cllocationmanager uilocalnotification

我正在开展这样一个应用程序执行以下操作的项目:

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]];

现在,我的问题是如何添加纬度和范围的特定区域。经度得到通知?

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

3 个答案:

答案 0 :(得分:2)

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 */
    }
}

答案 1 :(得分:1)

探索iOS核心位置框架提供的基于位置的服务。

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

答案 2 :(得分:0)

1.获取用户当前位置。

我在博客和Github上发布了有关如何获取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];
}
}