如何使用标识符连接外围设备/ BLE设备?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用标识符连接外围设备/ BLE设备?相关的知识,希望对你有一定的参考价值。

我想使用标识符连接外围设备。我可以做吗?

centralManager?.connect(peripheral, options: nil)

我在一个ViewController扫描设备,并在另一个ViewController连接它。

以下是我的要求:

当我扫描设备并保存下次可以出现在主屏幕并直接连接的设备时。因此,为此,我使用singleton类从一个视图访问外围数据到另一个视图。但它始终初始化为空。所以我想通过使用标识符来连接外围设备。我不知道我们在哪里存储[CBPeripheral]并在需要时访问它。

答案

我想使用标识符连接外围设备。我可以做吗?

简答:不,你不能这样做。

答案很长:

Refer apple official document.

没有用于连接标识符的规定或方法但是,Apple提供了使用标识符来检索外围设备的规定。

我们来讨论一些其他选择

CBPeripheral没有实现NSCoding。因此,几乎不可能将BLEPeripheral对象存储到NSUserDefaults或任何其他容器中。

最好的解决方案是存储CBPeripheral的属性,如名称或标识符等。

UserDefaults.standard.set(Device_name, forKey: "Device_name")
UserDefaults.standard.set(Device_Identifier forKey: "Device_Identifier")

通过使用retrievePeripherals(withIdentifiers:),您可以再次获得BLEPeripheral值。然后您可以使用此对象直接连接

Here is the documentation

retrievePeripherals(withIdentifiers :)

按标识符返回已知外围设备的列表。

以上是关于如何使用标识符连接外围设备/ BLE设备?的主要内容,如果未能解决你的问题,请参考以下文章

BLE外围设备断开

如何获取配对的 BLE 设备数量?

如何在 Android 中获取当前连接的 BLE 外围设备

如何查看外围设备的 BLE 服务?

使用基于广告服务 UUID 的扫描过滤器扫描 BLE 外围设备

Android 8.1 连接到调用 connectGatt 的 BLE 外围设备。回调总是说断开连接。从不连接