Я пытаюсь узнать о CoreBluetooth и внешних аксессуарах на iOS.EAAccessoryDidConnectNotification не срабатывает
Во-первых, я попытался увидеть список устройств, подключенных к моему телефону через Bluetooth через print(EAAccessoryManager.sharedAccessoryManager().connectedAccessories)
... несмотря на то, что у вас 3 устройства подключены (согласно приложению «Настройки»), мне присваивается пустой массив.
Далее я попытался регистрации для подсоединять/отсоединять уведомлений:
import UIKit
import ExternalAccessory
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self,
selector: "somethingConnected:",
name: EAAccessoryDidConnectNotification,
object: nil)
NSNotificationCenter.defaultCenter().addObserver(self,
selector: "somethingDisconnected:",
name: EAAccessoryDidDisconnectNotification,
object: nil)
EAAccessoryManager.sharedAccessoryManager().registerForLocalNotifications()
}
func somethingConnected(name: EAAccessory) {
print("here")
}
func somethingDisconnected(name: EAAccessory) {
print("there")
}
}
... Я ничего не получают, когда я выключить/включить (и, таким образом, отключить/подключить) простой динамик Bluetooth у меня есть.
I am seeing this issue (уведомления не доставлять только после завершения блока showBluetoothAccessoryPickerWithNameFilter()
выполняет), но, в общем, похоже, либо:
A) Что-то с прошивкой не работает правильно
B) I» m делает что-то не так (более вероятно, из двух).
Должен ли я иметь специальный сертификат MFI для просмотра списка подключенных устройств? Почему доставка уведомлений не производится?
Любые рекомендации/примеры кода приветствуются.
Update
Самое главное: До сих пор не знаю, почему connectedAccessories
не работает, так что совет по этой части значительно лучшего.
Сказанное, перечитав документацию разработчика Apple, я не верю, что это правильно или возможно использовать NSNotificationCenter.defaultCenter().addObserver
с этими типами уведомлений.
В частности, в документации указано, что уведомления EA не будут доставлены до тех пор, пока не назовется showBluetoothAccessoryPickerWithNameFilter()
. EAAccessoryDidConnectNotification
и EAAccessoryDidDisconnectNotification
предназначены для информирования приложения о том, что пользователь сделал с диалогом выбора. Не похоже, что это уведомления на системном уровне, которые могут быть подняты NSNotificationCenter
.
Пожалуйста, исправьте меня, если это неверное показание.
Это не ответ. Я столкнулся с такой же проблемой, вы нашли решение @DanShev? – Dany19