苹果在WWDC2014上正式发布了全新的iOS8操作系统。界面上iOS8与iOS7相比变化不大,不过在功能方面进行了完善。
![](https://img-blog.csdn.net/20140630161742250?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVqaWFueGlhbmc2NjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
iOS8中更新和公开了很多接口,其中有一项本地消息通知UILocalNotification,大家肯定都不陌生。但是在iOS8中对其进行了优化和改进。现在它可以根据地理位置发起消息通知,即我们在App中设置好一个坐标(经纬度)和半径(范围),当装有本App的设备进入本区域后,App就会发出一个消息通知。
![](https://img-blog.csdn.net/20140630162058765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVqaWFueGlhbmc2NjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
具体操作如下:
1.要导入我们需要的类库CoreLocation.framework
2.登记位置信息,获取用户的授权
同时还要进行配置plist文件
当运行到最后一句时,用户会收到系统提示,允许后app获得授权。
3.获取授权后app就会回调方法
回调方法里注册通知
4.到了一定区域后触发消息通知,收到消息后app回调方法
注:
查看官方文档,了解更多UILocalNotification 新增API;
本服务需要位置信息登记;
如果位置信息被禁用,这个方法application:didReceiveLocalNotification: 就不会被调用;
iOS8中更新和公开了很多接口,其中有一项本地消息通知UILocalNotification,大家肯定都不陌生。但是在iOS8中对其进行了优化和改进。现在它可以根据地理位置发起消息通知,即我们在App中设置好一个坐标(经纬度)和半径(范围),当装有本App的设备进入本区域后,App就会发出一个消息通知。
具体操作如下:
1.要导入我们需要的类库CoreLocation.framework
2.登记位置信息,获取用户的授权
- CLLocationManager *locMan = [[CLLocationManager alloc] init];
- locMan.delegate = self;
- // request authorization to track the user’s location
- [locMan requestWhenInUseAuthorization];
当运行到最后一句时,用户会收到系统提示,允许后app获得授权。
3.获取授权后app就会回调方法
- - (void)locationManager:(CLLocationManager *)manager
- didChangeAuthorizationStatus:(CLAuthorizationStatus)status
- {
- // check status to see if we’re authorized
- BOOL canUseLocationNotifications =
- (status == kCLAuthorizationStatusAuthorizedWhenInUse);
- if (canUseLocationNotifications) {
- [self startShowingLocationNotifications];
- }
- }
- - (void)startShowingNotifications
- {
- UILocalNotification *locNotification = [[UILocalNotification alloc]
- init];
- locNotification.alertBody = @“You have arrived!”;
- locNotification.regionTriggersOnce = YES;
- locNotification.region = [[CLCircularRegion alloc]
- initWithCenter:LOC_COORDINATE
- radius:LOC_RADIUS
- identifier:LOC_IDENTIFIER];
- [[UIApplication sharedApplication]
- scheduleLocalNotification:localNotification];
- }
- //- (instancetype)initWithCenter:(CLLocationCoordinate2D)center //区域的中心 经纬度
- // radius:(CLLocationDistance)radius //区域半径 范围
- // identifier:(NSString *)identifier; //通知的唯一标示 描述
4.到了一定区域后触发消息通知,收到消息后app回调方法
- -(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
- {
- NSLog(@"%s",__func__);
- }
- - (void)application:(UIApplication *)application didReceiveLocalNotification:
- (UILocalNotification *)notification
- {
- CLRegion *region = notification.region;
- if (region)
- {
- [self tellFriendsUserArrivedAtRegion:region];
- }
- }
注:
查看官方文档,了解更多UILocalNotification 新增API;
本服务需要位置信息登记;
如果位置信息被禁用,这个方法application:didReceiveLocalNotification: 就不会被调用;