iOS6周辺機器のBluetooth接続について質問です。
info.plist に UIBackgroundModes bluetooth-peripheral を追加すると、アプリの起動時に初めて許可が求められます。
「appname」は、アプリを使用していないときでも近くの Bluetooth デバイスでデータを利用できるようにしようとしています
リクエストを拒否 (許可しない) した場合、設定 - プライバシー - Bluetooth 共有 - 「アプリ名」を「オフ」にします。
CBPeripheralManagerDelegateをリッスンしてできるかどうかを確認するように設定しましたが、リクエストを拒否しても常に「ON」を返します。(バックグラウンドに移行する前に「オン」になっているため、これも理にかなっています)
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral{
NSLog(@"%s",__func__);
NSLog(@"%@",[peripheral description]);
NSString *state = nil;
switch (peripheral.state) {
case CBPeripheralManagerStateResetting:
state = @"resetting"; break;
case CBPeripheralManagerStateUnsupported:
state = @"unsupported"; break;
case CBPeripheralManagerStateUnauthorized:
state = @"unauthorized"; break;
case CBPeripheralManagerStatePoweredOff:
state = @"off"; break;
case CBPeripheralManagerStatePoweredOn:
state = @"on"; break;
default:
state = @"unknown"; break;
}
NSLog(@"peripheralManagerDidUpdateState:%@ to %@ (%d)", peripheral, state, peripheral.state);
}
CBPeripheralManagerStateUnauthorized が拒否されたステータスを示しているように見えますが、リクエストを拒否してもこのステータスを取得できません。
質問: 「ユーザーが拒否したバックグラウンド アクセス要求を見つける方法はありますか?」