做的项目有自动登录的需求,在完成这个功能的时候,为了安全问题用了keychain来进行存取账户和密码。
在使用的过程中,有用户一直出现自动登录失败的问题,类似于本地存取登录信息被清空,各种排查后,再所有可能出现问题退出登录或清空本地信息的地方全部加上了收集并上传后台。
最后排查出是keyChain出现了偶然存取失败的问题,这个时候猜测可能是苹果的BUG,后续在获取失败的地方加上了失败原因上传到后台的方法后,经过大数据排查终于定位到问题:
1."未能完成操作。(“com.samsoffes.samkeychain”错误 -25308"
2."User interaction is not allowed", "name" : "iOS-KeyChain查询失败"
3."The specified item could not be found in the keychain", "name" : "iOS-KeyChain查询失败"
4."未能完成操作。(“com.samsoffes.samkeychain”错误 -25300。)"
经过大量搜索和查看文档,1和2是一个同样问题,3和4也是同样的问题。
查看源码后发现SAMKeyChain有一个设置选项:
kSecAttrAccessibleWhenUnlocked 设置为这个属性即可