«CBCentralManager (делегат: сам, очередь: ноль)» не показывает всплывающее сообщение Bluetooth, когда Bluetooth выключен из Центра управления - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь перевести пользователя на Настройки Bluetooth нажатием кнопки.CBCentralManager(delegate: self, queue: nil) работает нормально, когда Bluetooth выключен из приложения настроек, , но не работает, когда Bluetooth выключен из Центра управления, например, не отображается всплывающее окно Bluetooth по умолчанию .
Теперь мне нужно знать,Bluetooth отключен из Центра управления, чтобы я мог показать пользовательское всплывающее сообщение.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Я подал отчет об ошибке 47516284 в Apple для этой проблемы.Вот текст проблемы, которую я подал.

Я заметил, что системное предупреждение, уведомляющее пользователя о том, что приложение нуждается в Bluetooth, будет отображаться, когда я выключаю Bluetooth с помощью приложения Настройки.Я могу использовать это системное оповещение, чтобы перейти непосредственно к настройкам Bluetooth и снова включить его.Однако, когда я выключаю Bluetooth с помощью Центра управления, системное предупреждение не отображается.Это проблематично, потому что, хотя я могу отобразить пользовательское предупреждение, чтобы сообщить пользователю о включении Bluetooth, нет никакого способа кодировать, переводя пользователя непосредственно в настройки Bluetooth, например, нажав кнопку.Я считаю, что функциональность должна быть неизменной независимо от того, как пользователь отключает Bluetooth.

0 голосов
/ 02 октября 2018

Вы правы, что опция инициализации CBCentralManagerOptionShowPowerAlertKey , которая должна отображать предупреждение, если структура инициируется при выключении Bluetooth, на самом деле не работает должным образом, если Bluetooth отключен из Центра управления,Поскольку в iOS 11 система на самом деле не отключит Bluetooth, если вы отключите кнопку в Центре управления, она отключит только подключенные в данный момент устройства.Тогда единственный способ отключить Bluetooth - это сделать в Системных настройках.Это задокументировано Apple, но для меня это крайне вводит в заблуждение.Поэтому я, честно говоря, не знаю, является ли поведение API, которое вы испытываете, ошибкой или ожидаемым.

Я предлагаю вам пропустить этот параметр инициализации и вместо этого полагаться на значение central.state когда вы получаете обратный вызов " centralManagerDidUpdateState: ", а затем создаете свое собственное всплывающее окно, если значение равно CBManagerStatePoweredOff , что, как ни странно, будет иметь место, независимо от того, используется ли bluetoothотключено в Системных настройках или отключено из Центра управления.

Если ваше приложение работает в фоновом режиме, вы можете вместо этого использовать локальное уведомление, чтобы привлечь внимание пользователя.

Не идеальное решение, но оно должно быть более надежным.

...