Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 6使用已保存的外设UUID重置所有设置问题_Ios_Ios6_Bluetooth Lowenergy - Fatal编程技术网

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

iOS 6使用已保存的外设UUID重置所有设置问题,ios,ios6,bluetooth-lowenergy,Ios,Ios6,Bluetooth Lowenergy,我正在iOS上开发一个BLE应用程序,在与BLE附件建立连接后,我将其保存到CBUUID。这样,如果以后重新启动应用程序,并且BLE附件未打开或超出范围,我可以在应用程序的UI中将BLE附件显示为“未找到”。如果BLE附件随后打开或用户进入BLE范围,则应用程序将自动连接到BLE附件 我面临的问题是,在iOS 6中,如果用户执行设置->常规->重置->重置所有设置,则下次启动应用程序时,BLE附件将具有不同的CBUUID。这会导致我的应用程序和UI出现问题,因为此时将显示两个BLE附件:一个用于

我正在iOS上开发一个BLE应用程序,在与BLE附件建立连接后,我将其保存到CBUUID。这样,如果以后重新启动应用程序,并且BLE附件未打开或超出范围,我可以在应用程序的UI中将BLE附件显示为“未找到”。如果BLE附件随后打开或用户进入BLE范围,则应用程序将自动连接到BLE附件

我面临的问题是,在iOS 6中,如果用户执行设置->常规->重置->重置所有设置,则下次启动应用程序时,BLE附件将具有不同的CBUUID。这会导致我的应用程序和UI出现问题,因为此时将显示两个BLE附件:一个用于新UUID,另一个用于旧UUID(用户过去已连接到但已不存在)

应用程序是否有办法告知用户是否已执行“重置所有设置”,以便我可以清除已保存到首选项中的已连接可扩展附件(UUID)列表

或者其他关于如何应对这种情况的想法


谢谢,

将UUID存储在钥匙链中,而不是NSUSERDEFAULT中。当用户执行重置所有设置时,应用程序的钥匙链将被擦除,因此您的UUID将消失


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

为什么不在每次启动时都做一个压缩语句,检查UDID是否已更改,并且必须将当前的UDID保存在sqlite中,例如,应用程序在注意到某些更改时会进行检查,以实现所需的功能


希望这会有所帮助,就像adpalumbo建议的那样,使用钥匙链存储UDID


这个库很好用。

至少,有人知道在哪个iOS版本中执行有关擦除UUID停止的“重置所有设置”行为吗?在iOS 7中,即使您“重置所有设置”,UUID也会得到维护。谢谢!我想这会管用的。我以前用过钥匙链,但这次没有考虑过:D.这个不行。当用户执行重置所有设置时,应用程序的钥匙链不会被擦除。所以我还是有同样的问题。还有其他想法吗?这可能与我如何使用钥匙链有关,我目前使用钥匙链就像存储密码一样。你能给我举一个使用钥匙链的例子吗?如果用户“重置所有设置”,钥匙链将被删除?