在ios 9中不推荐使用kSecAttrAccessibleAlways

我使用keychain进行身份validation,然后在后台将位置信息发送到服务器。

但是,因为kSecAttrAccessibleAlways得到了depricated,我将不得不使用kSecAttrAccessibleAfterFirstUnlock 。 这允许重新启动手机后首次解锁后使用keychain

问题是如果用户重新启动电话,并且在第一次解锁之前位置改变,则authentication将失败,因为我们无法从keychain获取。

我怎么解决这个问题。 如何findkeychain不能被访问,并停止authentication过程。

谢谢。

在用户首次解锁设备并启动设备之前,您的应用程序将如何运行?

顺便说一句,根据最新的文档,kSecAttrAccessibleAlways不被弃用。 也许我错过了一些东西….

这取决于你的确切设置。 例如,VoIP和地区监控可以在首次解锁之前自动启动应用程序。 Apple Watch启用的应用程序可以在手机第一次解锁之前从后台启动手机应用程序。 但是,在用户首次input密码之后,包括后台提取function在内的所有其他服务都不会启动,直到用户首次input其密码,以便您可以安全地使用这些服务。 但是对于区域监控,解决scheme可能是更改function,以便用户在第一次解锁之后必须打开应用程序以validation身份并将信息发送到服务器。 例如,在后台caching位置数据,然后当用户打开应用程序时,继续使用预期的function。