我正在尝试为 iOS 应用程序实现 iBeacon 范围。
[locationManager requestAlwaysAuthorization];
CLBeaconRegion * region = [self regionFromUUID:uuid];
[locationManager startMonitoringForRegion:region];
为了确定设备是在区域内还是区域外:
- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
{
[locationManager requestStateForRegion:region];
}
这成功调用:
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region {
if (state == CLRegionStateInside) {
[locationManager startRangingBeaconsInRegion:(CLBeaconRegion*)region];
} else {
[locationManager stopRangingBeaconsInRegion:(CLBeaconRegion*)region];
}
}
并且该应用程序已成功使用locationManager:didRangeBeacons:inRegion:
.
我遇到的问题是使用requestWhenInUseAuthorization
. locationManager:didStartMonitoringForRegion:
调用后[location requestStateForRegion:region]
,委托方法locationManager:monitoringDidFailForRegion:withError:
返回错误代码 4:“操作无法完成”。
交换似乎绕过了这个错误并被requestStateForRegion
成功调用。startRangingBeaconsInRegion
locationManager:didRangeBeacons:inRegion:
这是一个已知问题,[locationManager requestStateForRegion:region];
如果仅kCLAuthorizationStatusAuthorizedWhenInUse
被授予会导致错误代码 4?