关于iOS6外设蓝牙连接的问题。
在info.plist中,如果我添加UIBackgroundModes bluetooth-peripheral,在app启动它首次请求权限。
即使您没有使用该应用程序,“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看起来显示被拒绝状态,但即使我拒绝请求,我也无法获得此状态。
问题是: “有什么办法可以找出用户拒绝的后台访问请求吗?”
答案 0 :(得分:2)
CBPeripheralManager
有一个authorizationStatus
属性,可以回复此信息。 (Apple documentation link)。
+ (CBPeripheralAuthorizationStatus)authorizationStatus
"返回应用程序在后台状态下共享数据的授权状态。一个值,指示应用程序是否有权在后台使用蓝牙服务共享数据。有关可能值的列表,请参阅“外围设备管理器授权状态”。"