iOS 6使用保存的BLE外围设备UUID重置所有设置问题



我正在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。当用户执行"重置所有设置"时,应用程序的钥匙链将被删除,因此您的UUID将消失。

如果您真的想对UUID使用NSUserDefaults,您也可以在Keychain中存储一些任意的标志。在这种情况下,你只需要在应用程序启动时检查钥匙链中是否存在标志。如果没有,则丢弃UUID并创建一个新标志。

正如adpalmbo建议的那样,使用钥匙链来存储您的UDID。

这个UICkeychain库是一个很好的库,并且易于使用。

为什么不在每次启动时都做一个压缩语句来检查UDID是否更改,例如,你必须将current_UDID保存在sqlite中,每次应用程序发现有什么更改时都要进行检查,你可以实现你想要的。。

希望这将有助于

最新更新