ios 定位 监听是否跨入某个指定的区域

  /*****监听用户是否进入和走出 在某个区域*****/
1
#import "ViewController.h" 2 #import <CoreLocation/CoreLocation.h> 3 4 5 @interface ViewController ()<CLLocationManagerDelegate> 6 7 /** */ 8 @property (nonatomic, strong) CLLocationManager *locationM; 9 10 @property (weak, nonatomic) IBOutlet UILabel *notice; 11 @end 12 13 @implementation ViewController 14 15 16 #pragma mark - 懒加载 17 /** 位置管理者属性的懒加载 */ 18 -(CLLocationManager *)locationM 19 { 20 if (!_locationM) { 21 _locationM = [[CLLocationManager alloc] init]; 22 _locationM.delegate = self; 23 24 if([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) 25 [_locationM requestAlwaysAuthorization]; 26 27 } 28 return _locationM; 29 } 30 31 32 33 - (void)viewDidLoad { 34 35 // 参数, 必须继承自 clregion 36 if ([CLLocationManager isMonitoringAvailableForClass:[CLCircularRegion class]]) { 37 38 // 1. 创建区域 39 // 1. 1 确定区域中心 40 CLLocationCoordinate2D center = {21.123, 121.345}; 41 42 // 1.2 区域半径 43 CLLocationDistance distance = 1000; 44 //2128000.000000 最大监控限度 45 if (distance > self.locationM.maximumRegionMonitoringDistance) { 46 distance = self.locationM.maximumRegionMonitoringDistance; 47 } 48 49 CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:center radius:distance identifier:@"一个神秘的地方"]; 50 51 /**以下两种方式都能监听 是否在区域 里面,建议用监控状态的方式 .下面两种方式都写出来了**/ 52 53 //-------######-----(方式一 start)------------ 54 55 // 2. 监听区域(会调用 didEnterRegion 和 didExitRegion 方法) 56 // [self.locationM startMonitoringForRegion:region]; 57 //-------######-----(方式一 end )------------ 58 59 60 //-------######-----(方式二 start)------------ 61 62 // 请求某个区域当前状态(在后台也可以监听到某个区域) 63 /*** 64 CLRegionStateUnknown, 65 CLRegionStateInside, 66 CLRegionStateOutside 67 **/ 68 69 // 2. 监听状态(会调用 didDetermineState 方法) 70 [self.locationM requestStateForRegion:region]; 71 72 //------######------(方式二 end)------------ 73 74 } 75 76 } 77 78 79 #pragma mark - CLLocationManagerDelegate 代理方法 80 81 /** 82 * 进入区域 83 * 84 * @param manager 位置管理者 85 * @param region 区域 86 */ 87 -(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region 88 { 89 NSLog(@"进入区域---%@", region.identifier); 90 self.notice.text = @"欢迎来到一个神秘的地方, 给你钱"; 91 } 92 93 /** 94 * 离开区域 95 * 96 * @param manager 位置管理者 97 * @param region 区域 98 */ 99 -(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region 100 { 101 NSLog(@"离开区域---%@", region.identifier); 102 self.notice.text = @"祝你们有大好前途"; 103 } 104 /** 105 * 注册区域失败调用 106 * 107 * @param manager 位置管理者 108 * @param region 区域 109 * @param error 错误信息 110 */ 111 -(void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error 112 { 113 114 // 移除距离较远的region 115 // [self.locationM stopMonitoringForRegion:region比较远的region ] 116 117 118 } 119 120 /** 121 * 当我们请求区域状态时调用 122 * 123 * @param manager 位置管理者 124 * @param state 状态 125 * @param region 区域 126 */ 127 -(void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region 128 { 129 if(state == CLRegionStateInside) 130 { 131 self.notice.text = @"欢迎来到一个神秘的地方, 给你钱"; 132 } 133 134 if (state == CLRegionStateOutside) { 135 self.notice.text = @"祝你们有大好前途"; 136 137 } 138 } 139 140 141 142 143 144 145 @end

 

转载于:https://www.cnblogs.com/developer-ios/p/4811275.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值