kSecAttrAccessibleAlways在iOS 9中已被弃用

5

我在后台使用keychain进行身份验证并发送位置信息到服务器。

但是由于kSecAttrAccessibleAlways已被弃用,我将不得不使用kSecAttrAccessibleAfterFirstUnlock。这允许在重新启动手机后第一次解锁之后使用keychain

问题是,如果用户在第一次解锁之前重启手机并更改位置,则身份验证将失败,因为我们无法从keychain中获取信息。

如何解决这个问题?如何找到keychain无法访问并停止身份验证过程。

谢谢。


1
哪里写着它被弃用了?我可以使用它而不会收到警告。 - mskw
2个回答

1
这取决于您的确切设置。例如,VoIP和区域监控可以在首次解锁之前自动启动应用程序。启用Apple Watch的应用程序可以在手机第一次解锁之前从后台启动电话应用程序。但是,所有其他服务,包括后台获取,将不会在重新启动手机后激活,直到用户首先输入他们的密码,因此在这些情况下您是安全的。但对于区域监控,一个解决方案可能是更改功能,使用户必须在首次解锁后打开应用程序进行身份验证并向服务器发送信息。例如,在后台缓存位置数据,然后当用户打开应用程序时,让它继续执行预期的功能。

1

如果用户没有解锁设备并启动应用程序,您的应用程序将如何运行?

顺便说一下,根据最新文档,kSecAttrAccessibleAlways没有被弃用。也许我漏看了什么....


1
问题在于是否启用了任何后台服务,例如位置。 - Durgaprasad
在WWDC15会议上,苹果提到了706安全和您的应用程序(在27:25处),指出kSecAttrAccessibleAlways将在iOS 9中被弃用。 - g_fred
4
然而,他们实际上并没有贬低它。这告诉我,他们最初做出了和我一样的假设,然后开发人员向他们提供了一份不能在没有kSecAttrAccessibleAlways标志的情况下正确工作的应用程序列表,于是他们改变了想法。这并不是这种情况第一次发生。 :-) - dgatwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接