我有一个蓝牙设备。连接到它之后,我想在后台重新连接到它。问题是我不知道在用户强行退出应用后(即使在新应用启动后)如何重新连接到设备
我所拥有的: 一种没有广告数据服务的蓝牙设备。
因为它没有广告数据,所以无法搜索具有后台服务的外围设备。因此,对于背景执行,我需要调用 centralManager.connect()
如果应用由于内存问题或类似原因而关闭,我可以在 centralManagers 委派方法 willRestoreState 中恢复所有内容。 dict 包含我可以通过 CBCentralManagerRestoredStatePeripheralsKey 获得的外围设备。 (我还实现了从 willFinishLaunchingWithOptions
中的 launchOptions 中获取 UIApplicationLaunchOptionsKey.bluetoothCentrals如果用户不强行退出应用程序,则恢复工作正常。因此,我知道我自己无法再次使用代码重新启动应用。
我想要的是,如果用户重新启动应用程序以还原我的CBPeripheral。在我可以再次调用centralManager.connect(peripheral)之后。
我将外围设备的uuid(peripheral.identifier.uuidString)存储在NSUserDefault数据中。
答案 0 :(得分:1)
首先连接到的CBPeripheral对象将具有一个标识符属性。您应该将此标识符存储到磁盘,以便在以后启动应用程序时可以再次加载它。然后,在创建新的CBCentralManager实例后,调用管理器的 retrievePeripheralsWithIdentifiers:方法(具有您先前加载的标识符)以再次获取CBPeripheral对象。此时,您可以像之前一样连接外围设备。