进入或退出iBeacon设备信号范围,如何获取设备信息

如何检测进入或退出region时,响应特定的ibeacon设备,在进入或退出代理方法中,region中UUID可以获取,但major与minor都为nil,请问如何做到到某个ibeacon范围内,进入或离开响应该iBeacon?

可以看看这个delegate beaconManager:didRangeBeacons:inRegion:. 检查这里的beacons对象

这个代理后台不运行吧?只走appDelegate中得didEnterRegion或者didExitRegion方法

有个技巧是在 startMonitoringForRegion: 的回调中,再调用startRangingBeaconsInRegion:。这样就可以在后台运行了

你好,请问下startMonitoringForRegion的回调方法是哪个?

beaconManager:didEnterRegion:. 更多的回调方法可以参考文档

恩好的,多谢,[_locationManager startRangingBeaconsInRegion:region];
[_locationManager startMonitoringForRegion:region]; 这两个方法有啥区别,第一个方法是获取当前region中的所有iBeacon设备,第二个方法是只监控region的进入或退出region边界状态,是么?多谢!

didDiscoverBeacons 这个方法与didRangeBeacons这个方法有啥区别,不都是获取所有的iBeacon全部设备么?

didDiscoverBeacons是按照蓝牙的方式去搜索蓝牙设备。didRangeBeacons是按照iBeacon协议去搜索beacon设备

你的理解比较正确,另外startMonitoringForRegion可以在后台运行。如果你还有其它问题,但是与本主题不相关,请重新开一个主题,以便检索。

谢谢

那就是弹出推送通知还不能在beaconManager:didEnterRegion:中判断,得在didRangeBeacons这个中进行判断并推送?信号是不间断发送的,那推送也就是不间断进行推送啊,不能控制每次进入或退出只推送一次么?

你可以在程序逻辑中控制,例如记录上次推送的时间

恩好的,多谢指导,有啥不明白的还请多多指教,多谢!