Beacon / IOS CLLocationManager 获取当前区域
Posted
技术标签:
【中文标题】Beacon / IOS CLLocationManager 获取当前区域【英文标题】:Beacon / IOS CLLocationManager get current region 【发布时间】:2015-06-22 21:27:30 【问题描述】:我正在做一个正在寻找信标的程序,我实现了 CLLocationManager 并且我的应用程序除了一点之外都可以工作。 我正在调用 startMonitoringForRegion() 以获取 didEnterRegion/didExitRegion 回调。在这些函数中,我正在执行 startRangingBeaconsInRegion()/stopRangingBeaconsInRegion() 以便在用户位于信标区域时获取精确信息。 我的问题很简单,如果应用程序在用户已经在信标范围内时启动,则不会调用 didEnterRegion。
我正在寻找一个类似 isInRegion() 的函数,这样当我的应用启动时,如果用户已经在该区域中,我可以执行 startMonitoringForRegion() 然后 isInRegion() 和 startRangingBeaconsInRegion()。
我目前的解决方法是在应用程序启动时调用 startRangingBeaconsInRegion(),然后在 didRangeBeacons 回调中,如果没有找到信标,我正在执行 stopRangingBeaconsInRegion()。 我不认为这是一种非常干净的方式,如果可能的话,我想用更好的方式代替
谢谢,
【问题讨论】:
【参考方案1】:您可以使用locationManager:didDetermineState:forRegion:
回调,它会告诉您您是Inside
、Outside
还是Unknown
。
你可以通过调用强制自己得到回调
locationManager.requestStateForRegion(region)
当您的应用启动时。
在此处查看更多信息:https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManagerDelegate_Protocol/#//apple_ref/occ/intfm/CLLocationManagerDelegate/locationManager:didDetermineState:forRegion:
【讨论】:
谢谢,正是我想要的!以上是关于Beacon / IOS CLLocationManager 获取当前区域的主要内容,如果未能解决你的问题,请参考以下文章
iOS Beacon Monitoring - didEnterRegion 仅在受监控区域触发 didExitRegion 后调用
802.11 ------ Beacon帧Beacon IntervalTBTTListen IntervalTIMDTIM