- 创建iBeacon对象
CLBeaconRegion* beaconRegion = [[CLBeaconRegion alloc]initWithProximityUUID:[[NSUUID alloc]initWithUUIDString:@"FDA50693-A4E2-4FB1-AFCF-C6EB07647825"]//只指定这个参数则匹配所有相同UUID的Beacon
major:10021
minor:8775
identifier:@"怪蜀黍的ibeacon"];//这个属性标识注册在系统内的Beacon Region
- 指定是否在边界穿越事件中通知给App
//如果在用户离开区域时不需要通知App,则可以设置区域的notifyOnEntry属性为NO。
beaconRegion.notifyOnExit = YES;
beaconRegion.notifyOnEntry = YES;
如果在边界穿越情况发生时,app没有在后台启动,系统会在后台启动app,使app处理这个情况。在启动时,你的app必须配置新的位置管理器location manager ,设置委托对象之后,这些事件通知会发送给locationManager:didExitRegion:和***locationManager:didEnterRegion: ***这两个方法。
- notifyEntryStateOnDisplay此属性含义,默认值是NO
beaconRegion.notifyEntryStateOnDisplay = YES;
当设置为YES时,位置管理器在用户打开屏幕且设备已经在Beacon Region范围内时发送通知。 即使你的应用没有 运行,这些通知也会传送。 在这种情况下,系统会在后台启动您的应用,以便它可以处理通知。在这两种情况下,如果位置管理器有委托对象delegate,位置管理器会调用这个方法*** locationManager:didDetermineState:forRegion:***
- iBeacon两种模式
//监测模式
[self.locationManager startMonitoringForRegion:beaconRegion];
Region事件会被分发给locationManager:didEnterRegion:和locationManager:didExitRegion:这两个代理方法。
如果失败則调用委托人的***locationManager:monitoringDidFailForRegion:withError: ***协议方法
一个app最多注册20个Region。
//检测是否在范围模式
[self.locationManager startRangingBeaconsInRegion:beaconRegion];
一旦注册,位置管理器会调用***locationManager:didRangeBeacons:inRegion: , 报告任何碰到的beacons给它的委托对象。
调用locationManager:rangingBeaconsDidFailForRegion:withError: ***来提供合适的错误信息。
如何在后台监测ibeacon对象呢?
notifyEntryStateOnDisplay属性设置为YES,同时把位置管理器的委托设置为AppDelegate,实现*** locationManager:didDetermineState:forRegion:这个方法,根据CLRegionState,区分不同的状态,来做对应的通知。
实现locationManager:didEnterRegion:*** 和locationManager:didExitRegion:这两个协议方法,来实现用户离开beacon范围的监测。
网友评论