ios11蓝牙有一些奇怪的东西

  • 本文关键字:ios11 ios bluetooth ios11
  • 更新时间 :
  • 英文 :


当我在设置中关闭蓝牙时,我使用 CBCentralManager来获取这样的蓝牙状态:

self.bluetoothManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

系统将显示这样的警报:系统警报

蓝牙的当前状态为 CBManagerStatePoweredOff。但是,当我在控制中心关闭蓝牙时,即使当前蓝牙状态仍然是CBManagerStatePoweredOff,此警报也不再显示。

在这种情况下,我如何提醒用户打开蓝牙?

您可以通过实现以下委托方法来提醒用户。

//Bluetooth state delegation
#pragma mark - CBCentralManagerDelegate
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
    NSString *stateString = nil;
    switch(self.CBManager.state)
    {
        case CBManagerStateResetting:
        stateString = @"The connection with the system service was momentarily lost, update imminent.";
        break;
        case CBManagerStateUnsupported:
        stateString = @"The platform doesn't support Bluetooth Low Energy."; break;
        case CBManagerStateUnauthorized: stateString = @"The app is not authorized to use Bluetooth Low Energy.";
        break;
        case CBManagerStatePoweredOff:
        stateString = @"Bluetooth is currently powered off.";
        break;
        case CBManagerStatePoweredOn:
        [self.beaconManager startMonitoringForRegion:self.museumsRegion];
        [self.beaconManager startRangingBeaconsInRegion: self.museumsRegion];
        break;
        case CBManagerStateUnknown:
        stateString = @"State unknown, update imminent.";
        break;
    }
    NSLog(@"%@", stateString);
}

现在应自动通知用户。

您可以使用 cbcentralmanageroptionshowpoweraltkey 在选项中禁用系统蓝牙警报。

NSDictionary *options = @{CBCentralManagerOptionShowPowerAlertKey: @NO};
self.bluetoothManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:options];

然后,您可以使用Deleget方法 CentralManagerDidupDateState:弹出您自定义警报。

相关内容

  • 没有找到相关文章

最新更新