Beacon / IOS CLLocationManager获取当前区域

时间:2015-06-22 21:27:30

标签: ios swift cllocationmanager ibeacon

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

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

我目前的解决方法是在应用程序启动时调用startRangingBeaconsInRegion(),然后在didRangeBeacons回调中,如果没有找到信标,我正在执行stopRangingBeaconsInRegion()。 我不认为这是一种非常干净的方式,并希望在可能的情况下用更好的东西取代

谢谢,

1 个答案:

答案 0 :(得分:4)

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