Beacon / IOS CLLocationManager 获取当前区域

Beacon / IOS CLLocationManager get current region

我正在做一个正在寻找信标的程序,我实现了 CLLocationManager 并且我的应用程序除了一点之外都可以工作。 我正在调用 startMonitoringForRegion() 以获得 didEnterRegion/didExitRegion 回调。在这些函数中,我正在执行 startRangingBeaconsInRegion()/stopRangingBeaconsInRegion() 以便在用户位于信标区域时获取准确信息。 我的问题很简单,如果应用程序在用户已经在信标范围内时启动,则不会调用 didEnterRegion。

我正在寻找类似 isInRegion() 的函数,这样当我的应用程序启动时,我可以执行 startMonitoringForRegion() 然后 isInRegion() 和 startRangingBeaconsInRegion() 如果用户已经在该区域中。

我目前的解决方法是在应用程序启动时调用 startRangingBeaconsInRegion(),然后在 didRangeBeacons 回调中,如果未找到信标,我将调用 stopRangingBeaconsInRegion()。 我不认为这是一种非常干净的方式,如果可能的话,我想用更好的方式代替

谢谢,

您可以使用 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