1

关于iOS6外设蓝牙连接的问题。

在 info.plist 中,如果我添加 UIBackgroundModes bluetooth-peripheral,在应用程序启动时它会首次请求许可。

"appname" 想让附近的蓝牙设备可以使用数据,即使您没有使用该应用程序

如果我拒绝(不允许)请求,设置 - 隐私 - 蓝牙共享 - “Appname”变成“OFF”;

我设置听 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 看起来像是显示拒绝状态,但即使我拒绝请求,我也无法获得此状态。

问题是:“有什么办法可以找出用户拒绝后台访问请求?”

4

1 回答 1

2

CBPeripheralManager具有authorizationStatus报告此信息的属性。(Apple 文档链接)。

+ (CBPeripheralAuthorizationStatus)authorizationStatus

"返回应用程序在后台状态下共享数据的授权状态。该值指示应用程序是否有权在后台使用蓝牙服务共享数据。有关可能值的列表,请参阅“外设管理器授权状态”。 "

于 2013-10-24T02:51:50.147 回答