我正在 iOS 上开发一个 BLE 应用程序,在与 BLE 配件建立连接后,我将 CBPeripheral UUID 保存到 NSUSerDefaults 中。这样,如果稍后重新启动应用程序,并且 BLE 配件未打开或超出范围,我可以在应用程序的 UI 中将 BLE 配件显示为“未找到”。如果 BLE 配件随后打开或用户进入 BLE 范围内,应用程序将自动连接到 BLE 配件。
我面临的问题是,在 iOS 6 中,如果用户执行“设置”->“常规”->“重置”->“重置所有设置”,则下次启动应用程序时,BLE 配件将具有不同的 CBPeripheral UUID。这会导致我的应用程序和 UI 出现问题,因为随后将显示两个 BLE 配件:一个用于新 UUID,另一个用于旧 UUID(用户过去曾连接过,但不再存在)。
应用程序是否有办法判断用户是否已执行“重置所有设置”,以便我可以清除已保存到首选项中的已连接 BLE 配件 (UUID) 列表?
或者对于如何处理这种情况还有其他想法吗?
谢谢
最佳答案
将 UUID 存储在钥匙串(keychain)中,而不是 NSUserDefaults 中。当用户执行重置所有设置时,应用程序的钥匙串(keychain)将被删除,因此您的 UUID 将消失。
如果您确实想使用 NSUserDefaults 作为 UUID,您也可以在钥匙串(keychain)中存储一些任意标志。在这种情况下,您只需在应用程序启动时检查钥匙串(keychain)中是否存在该标志即可。如果没有,则丢弃 UUID 并创建一个新标志。
关于iOS 6 重置所有设置问题与保存的 BLE 外设 UUID 相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23163652/