gpt4 book ai didi

ios - 应用重启后连接到蓝牙 CBPeripheral

转载 作者:行者123 更新时间:2023-11-28 11:43:37 24 4
gpt4 key购买 nike

我有一个蓝牙设备。与它连接后,我想在后台重新连接它。问题是我不知道如何在用户强制退出应用程序后重新连接到设备(即使在新应用程序启动后)

我有:广告数据中没有服务的蓝牙设备。

因为它没有广告数据,所以我无法在后台搜索有服务的外设。因此,对于后台执行,我需要调用 centralManager.connect()

如果应用程序由于内存问题或类似问题而关闭,我可以在 centralManagers 委托(delegate)方法中恢复所有内容 willRestoreState dict 包含我可以使用 CBCentralManagerRestoredStatePeripheralsKey 获得的外围设备。 (我还实现了从 launchOptionswillFinishLaunchingWithOptions

中获取 UIApplicationLaunchOptionsKey.bluetoothCentrals

问题

如果用户没有强制退出应用程序,恢复就会起作用。所以我知道我不能自己再次使用代码重新启动应用程序。

我想要的是,如果用户重新启动应用程序以恢复我的 CBPeripheral。在我可以再次调用 centralManager.connect(peripheral) 之后。

附加信息

我将外围设备的 uuid (peripheral.identifier.uuidString) 存储在 NSUserDefault 数据中。

想法

  • 我想创建一个带有设备信息的 CBPeripheral 对象。如果我阅读的一切都是正确的,那是不可能的。
  • 如果我将 CBPeripheral 保存在 Core Data 中,我不知道如果 Apple 更改 CBPeripherals API 会发生什么,这可能不是一个好主意。
  • 苹果可以通过某种方式拍摄 CBPeripheral 的快照。我能否触发此快照,以便每次都可以使用 UIApplicationLaunchOptionsKey.bluetoothCentralsCBCentralManagerRestoredStatePeripheralsKey 恢复外围设备?

最佳答案

您首先连接到的 CBPeripheral 对象将具有标识符属性。您应该将此标识符存储到磁盘,以便您可以在稍后启动应用程序时再次加载它。然后,在创建 CBCentralManager 的新实例后,调用管理器的 retrievePeripheralsWithIdentifiers: 方法(使用您之前加载的标识符)再次获取 CBPeripheral 对象。此时您可以像之前一样连接外设。

关于ios - 应用重启后连接到蓝牙 CBPeripheral,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52967920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com