2016-01-19 93 views
0

我正在嘗試瞭解iOS上的CoreBluetooth和外部附件。EAAccessoryDidConnectNotification不會觸發

首先,我試着看到設備列表通過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") 
    } 
} 

...我什麼也得不到當我打開/關閉(從而斷開/連接)一個簡單的藍牙音箱我有。

I am seeing this issue(通知不提供,直到showBluetoothAccessoryPickerWithNameFilter()完成塊執行後),但是,總體來說,這似乎是兩種:

A)的東西與iOS無法正常工作

B)我」 m做錯了事情(這兩個可能性更大)。

我需要安裝特殊的MFI證書才能查看連接的附件列表嗎?爲什麼通知不提供?

任何建議/代碼示例非常感謝。

更新

更重要的是:仍然不知道爲什麼connectedAccessories不工作,所以對這個忠告大大所需。

也就是說,重新閱讀Apple Developer文檔,我不認爲這些類型的通知使用NSNotificationCenter.defaultCenter().addObserver是正確的/可能的。

具體來說,文檔指出,直到調用showBluetoothAccessoryPickerWithNameFilter()之前,EA通知纔會被傳遞。 EAAccessoryDidConnectNotificationEAAccessoryDidDisconnectNotification旨在通知應用程序關於用戶使用選取器對話進行的操作。它似乎並不是系統級別的通知,可以通過NSNotificationCenter找到。

如果這是不正確的閱讀,請糾正我。

+0

這不是答案。我面臨同樣的問題,您是否找到解決方案@DanShev? – Dany19

回答

1

你應該改變

selector: "somethingConnected:" 

selector: @selector(somethingConnected:) 

,比它會火。 欲瞭解更多詳情,請參閱以下網站: Why does EAAccessoryDidConnectNotification occur twice?

+0

看來你的代碼是Swift,哎呀。我犯了一個錯誤,對此抱歉。但提供的鏈接可能會解決您的問題。 – Jasonhan