startMonitoringForRegion vs startMonitoringSignificantLocationChanges

时间:2015-02-04 14:48:45

标签: ios bluetooth location

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

[self.locationManager startMonitoringForRegion:beaconRegion];

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

[self.locationManager startMonitoringSignificantLocationChanges];

问题是这两个方法都调用了didUpdateLocations,所以即时发送多个通知。我可以确定startMonitoringForRegion或startMonitoringSignificantLocationChanges是否调用了这个方法吗?

由于

2 个答案:

答案 0 :(得分:2)

startMonitoringSignificantLocationChanges使用locationManager:didUpdateLocations:callback

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

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

答案 1 :(得分:1)

问题在于didEnterRegion:callback我有startRangingBeaconsInRegion和startUpdatingLocation。

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

第二个对我来说没有必要,所以我评论该行并且它可以正常工作。 didUpdateLocations:回调现在只能由startMonitoringSignificantLocationChanges触发。