EAAccessoryDidConnectNotification不会触发

时间:2016-01-19 01:29:25

标签: ios swift bluetooth eaaccessory

我正在尝试了解iOS上的CoreBluetooth和外部附件。

首先,我试图看到一个设备列表通过蓝牙通过print(EAAccessoryManager.sharedAccessoryManager().connectedAccessories)连接到我的手机...尽管连接了3个设备(根据设置应用程序),我给了一个空数组。 / p>

接下来,我尝试注册连接/断开连接通知:

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)我做错了(两者中的可能性更大)。

我是否需要安装特殊的MFI证书才能查看已连接的配件列表?为什么没有提供通知?

非常感谢任何建议/代码示例。

更新

最重要的是:仍然不知道为什么connectedAccessories不起作用,所以非常需要这篇文章的建议。

也就是说,重新阅读Apple Developer文档,我认为将NSNotificationCenter.defaultCenter().addObserver用于这些类型的通知是不正确/可能的。

具体而言,文档指出在调用showBluetoothAccessoryPickerWithNameFilter()之前不会传递EA通知 - 例如EAAccessoryDidConnectNotificationEAAccessoryDidDisconnectNotification旨在通知应用用户使用选择器对话框执行的操作。它们似乎不是NSNotificationCenter可以获取的系统级通知。

如果这是一个不正确的读数,请纠正我。

1 个答案:

答案 0 :(得分:1)

你应该改变

selector: "somethingConnected:"

selector: @selector(somethingConnected:)

,比起它会发射。 有关详细信息,请访问以下网站: Why does EAAccessoryDidConnectNotification occur twice?