Подтвердить что ты не робот

IOS CoreBluetooth пассивно проверяет, включен ли Bluetooth, не предлагая пользователю включить Bluetooth

Сценарий выглядит следующим образом. У меня уже развернутое приложение используется людьми. Я рассматриваю возможность применения некоторых экспериментальных функций Bluetooth Low Energy, но прежде чем я это сделаю, я хочу провести "в диком" опросе количество пользователей, у которых Bluetooth включен или остается Bluetooth все время. Таким образом, я хотел бы просто проверить это в фоновом режиме и отправить обратно статистику сервера по количеству пользователей с уже включенным Bluetooth, даже не используя связь Bluetooth.

Я успешно создал экземпляр CBCentralManager в своем приложении и могу получить статус Bluetooth сразу после создания экземпляра и когда состояние Bluetooth обновляется через centralManagerDidUpdateState:. Так что все хорошо. Проблема, с которой я столкнулась, заключается в том, что если состояние CBCentralManagerStatePoweredOff, то устройство выдает предупреждение, в котором пользователю предлагается включить "Включить Bluetooth, чтобы разрешить [имя приложения] для подключения к аксессуарам". Именно эту подсказку я стараюсь избегать. На этом этапе я просто хочу изучить количество пользователей, которые оставляют Bluetooth включен - я не хочу использовать соединение Bluetooth.

Итак, есть ли способ проверить статус Bluetooth без запроса пользователя, если вы не собираетесь использовать соединение Bluetooth?

4b9b3361

Ответ 1

iOS 7 имеет новый параметр options при создании CBCentralManager, чтобы отключить его.

Мне бы понравилось решение для более ранних iOS.

Ответ 2

Вы можете использовать следующее, когда вы инициализируете CBCentralManager.

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

Возможно, я не объяснил это правильно, пожалуйста, прямо в комментарий, если есть какие-либо проблемы.