Постоянное отображение Включите Bluetooth, чтобы разрешить приложению подключаться к предупреждающему сообщению об аксессуарах в фоновом режиме в ios

Я использую технологию iBeacon в своем приложении. Я проверяю в приложении, включен ли Bluetooth пользователем или отключен, и для этого я написал код ниже.

 - (void)viewDidLoad 
 {
  [super viewDidLoad];
  _bluetoothManager =  [[CBCentralManager alloc] initWithDelegate:self queue:nil options:nil];
}

  // bluetooth manager state change
  - (void)centralManagerDidUpdateState:(CBCentralManager *)central
 {
 NSString *stateString = nil;
 switch(central.state)
 {
    case CBCentralManagerStateResetting: stateString = @"The connection with the system service was momentarily lost, update imminent."; break;
    case CBCentralManagerStateUnsupported: stateString = @"The platform doesn't support Bluetooth Low Energy."; break;
    case CBCentralManagerStateUnauthorized: stateString = @"The app is not authorized to use Bluetooth Low Energy."; break;
    case CBCentralManagerStatePoweredOff: stateString = @"Bluetooth is currently powered off."; break;
    case CBCentralManagerStatePoweredOn: stateString = @"Bluetooth is currently powered on and available to use."; break;
    default: stateString = @"State unknown, update imminent."; break;
  }
 }

введите здесь описание изображения

Проблема: это предупреждающее сообщение очень часто появляется в фоновом режиме или когда открыто другое приложение, даже если я убил приложение. Я хочу показать это предупреждающее сообщение по умолчанию, но только тогда, когда пользователь открывает приложение.

Может ли кто-нибудь предоставить мне решение?


person Arpit    schedule 07.12.2015    source источник
comment
Вы уверены, что не используете Bluetooth где-то еще? ViewDidLoad должен срабатывать только при загрузке контроллера представления. Какие фоновые режимы (если есть) вы установили для своего приложения?   -  person Paulw11    schedule 07.12.2015
comment
Да, я использую Bluetooth только для проверки, включен он или нет. у меня включено. И в возможностях только удаленное уведомление включено. Я думаю, я столкнулся с этой проблемой с ios 8.   -  person Arpit    schedule 07.12.2015
comment
Вы должны попробовать удалить параметры для showPowerAlertKey, и если это не поможет, используйте наблюдатель уведомлений, чтобы освободить ваш центральный менеджер, когда ваше приложение переходит в фоновый режим.   -  person Paulw11    schedule 07.12.2015
comment
Сначала я пробовал без этой опции showPowerAlertKey, но это тоже не сработало.   -  person Arpit    schedule 08.12.2015


Ответы (1)


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

Возможно, это работает, чтобы скрыть всплывающее окно системы.

person Rain    schedule 09.12.2015
comment
Я хочу показать предупреждение, чтобы пользователь мог легко перейти к настройке Bluetooth. - person Arpit; 09.12.2015
comment
Возможно, нет возможности перейти к настройкам Bluetooth, вы можете предупредить пользователя текстом или специальным пользовательским интерфейсом, когда обратный вызов делегата central.state равен case CBCentralManagerStatePoweredOff - person Rain; 09.12.2015
comment
Ну вот self.bluetoothManager = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionShowPowerAlertKey: false]) - person Jobs; 02.09.2016