startMonitoringForRegion 与 startMonitoringSignificantLocationChanges

startMonitoringForRegion vs startMonitoringSignificantLocationChanges

我正在使用 IBeacon 构建一个简单的 ios 应用程序,我正在使用 startMonitoringForRegion 来检测信标。

[self.locationManager startMonitoringForRegion:beaconRegion];

没关系。我的问题是我想检查蓝牙是打开还是关闭。如果蓝牙关闭,我想定期检查用户是否靠近信标网络并发送建议激活蓝牙的通知。为此,我正在使用 startMonitoringSignificantLocationChanges。

[self.locationManager startMonitoringSignificantLocationChanges];

问题是这两种方法都调用了 didUpdateLocations,所以我发送了多个通知。我可以确定此方法是由 startMonitoringForRegion 还是 startMonitoringSignificantLocationChanges 调用的吗?

谢谢

startMonitoringSignificantLocationChanges 使用 locationManager:didUpdateLocations: 回调

while startMonitoringForRegion: 使用 locationManager:didEnterRegion:(didExitRegion) 回调

参见参考资料:https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/instm/CLLocationManager/startMonitoringForRegion:

问题是在 didEnterRegion: 回调中我有 startRangingBeaconsInRegion 和 startUpdatingLocation。

[manager startRangingBeaconsInRegion:(CLBeaconRegion*) region]; 
//[self.locationManager startUpdatingLocation];

第二个对我来说不是必需的,所以我评论了那行并且它工作正常。 didUpdateLocations:回调现在仅由 startMonitoringSignificantLocationChanges 触发。