我正在iOS上开发一个BLE应用程序,在与BLE附件形成连接后,我将保存到NSUSerDefaults的CBPeripheral UUID。这样,如果稍后重新启动应用程序,并且BLE配件未开启或超出范围,我可以在应用程序的用户界面中显示BLE配件为"未找到&#34 ;。如果BLE配件随后开启或用户进入BLE范围,应用程序将自动连接到BLE配件。
我面临的问题是,在iOS 6中,如果用户进行了设置 - >一般 - >重置 - >重置所有设置,下次启动应用程序时,BLE附件将具有不同的CBPeripheral UUID。这会导致我的应用程序和用户界面出现问题,因为将显示两个BLE附件:一个用于新UUID,另一个用于旧UUID(用户过去已连接但不再存在)。
应用程序是否有办法判断用户是否已完成"重置所有设置"这样我就可以清除已保存到偏好中的已连接BLE配件(UUID)列表?
或者有关如何处理这种情况的任何其他想法?
谢谢,
答案 0 :(得分:1)
将UUID存储在Keychain中而不是NSUserDefaults中。当用户执行“重置所有设置”时,应用程序的钥匙串将被删除,因此您的UUID将会消失。
如果您真的想将NSUserDefaults用于UUID,您也可以在Keychain中存储一些任意标志。在这种情况下,您只需在应用启动时检查钥匙串中是否存在该标志。如果没有,则删除UUID并创建一个新标志。
答案 1 :(得分:1)
正如adpalumbo建议的那样,使用钥匙串存储您的UDID。
这个UICkeychain库很好用,很容易使用。
答案 2 :(得分:0)
为什么不在每个启动时创建一个压缩语句来检查UDID是否被更改,并且你必须在sqlite中保存current_udid,并且一旦它注意到某些更改你可以实现应用程序检查你想要什么..
希望这会有所帮助