iOS 6 重置所有设置问题与保存的 BLE 外设 UUID 相关

标签 ios ios6 bluetooth-lowenergy

我正在 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/

相关文章:

iphone - iOS - 检测震动强度

ios - RNCryptor 密码加密

iphone - iOS 中的 Mac PhotoBooth 凹痕效果

javascript - 从室内自行车数据特征解码蓝牙数据

bluetooth - CC2540 USB - 使可发现 : Not ready to perform task

android - Opentok 存档问题?

ios - 谁的 View 不在窗口层次结构中? swift

ios - 如何在特定时间快速修剪视频

objective-c - UIActivityViewController 如何将字符串转换为打印

javascript - Javascript(Ionic)中两个移动设备之间的距离