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: 回调,它会告诉您您是InsideOutside 还是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 制造数据的最佳方式

在 iOS 8 Beacon 中未检测到

iOS Beacon Monitoring - didEnterRegion 仅在受监控区域触发 didExitRegion 后调用

有关802.11的Beacon帧

802.11 ------ Beacon帧Beacon IntervalTBTTListen IntervalTIMDTIM

Estimote Beacon - 如何将 EstimoteTelemetry 与 Beacon 匹配