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];
これは、許可されている場合にのみエラー コード 4 が発生する既知の問題kCLAuthorizationStatusAuthorizedWhenInUse
ですか?