2

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

首先,我尝试查看通过蓝牙连接到我手机的设备列表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")
    }
}

...当我关闭/打开(从而断开/连接)我拥有的简单蓝牙扬声器时,我什么也没有收到。

我看到了这个问题直到showBluetoothAccessoryPickerWithNameFilter()执行完成块之后才发送通知),但是,一般来说,它看起来像:

A)iOS 的某些东西无法正常工作

B)我做错了什么(两者中的可能性更大)。

我是否需要安装特殊的 MFI 证书才能查看连接的附件列表?为什么不发送通知?

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

更新

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

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

具体来说,文档指出 EA 通知在showBluetoothAccessoryPickerWithNameFilter()被调用之前不会被传递——例如EAAccessoryDidConnectNotificationEAAccessoryDidDisconnectNotification旨在通知应用程序用户对选择器对话做了什么。它们似乎不是可以被NSNotificationCenter.

如果这是不正确的阅读,请纠正我。

4

1 回答 1

1

你应该改变

selector: "somethingConnected:"

进入

selector: @selector(somethingConnected:)

,比它会火。更多详细信息,请参见以下网站: 为什么 EAAccessoryDidConnectNotification 会出现两次?

于 2016-06-15T09:49:47.377 回答