2016-01-19 1 views
0

Я пытаюсь узнать о 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.

Пожалуйста, исправьте меня, если это неверное показание.

+0

Это не ответ. Я столкнулся с такой же проблемой, вы нашли решение @DanShev? – Dany19

ответ

1

вы должны изменить

selector: "somethingConnected:" 

в

selector: @selector(somethingConnected:) 

, чем он будет стрелять. Для получения дополнительной информации см. Следующий веб-сайт: Why does EAAccessoryDidConnectNotification occur twice?

+0

кажется, что ваш код Swift, oops. Я сделал ошибку, извините за это. Но предоставленная ссылка может решить вашу проблему. – Jasonhan