做的項(xiàng)目有自動(dòng)登錄的需求,在完成這個(gè)功能的時(shí)候疆虚,為了安全問題用了keychain來進(jìn)行存取賬戶和密碼苛败。
在使用的過程中,有用戶一直出現(xiàn)自動(dòng)登錄失敗的問題径簿,類似于本地存取登錄信息被清空罢屈,各種排查后,再所有可能出現(xiàn)問題退出登錄或清空本地信息的地方全部加上了收集并上傳后臺(tái)篇亭。
最后排查出是keyChain出現(xiàn)了偶然存取失敗的問題儡遮,這個(gè)時(shí)候猜測(cè)可能是蘋果的BUG,后續(xù)在獲取失敗的地方加上了失敗原因上傳到后臺(tái)的方法后暗赶,經(jīng)過大數(shù)據(jù)排查終于定位到問題:
1."未能完成操作鄙币。(“com.samsoffes.samkeychain”錯(cuò)誤 -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”錯(cuò)誤 -25300蹂随。)"
經(jīng)過大量搜索和查看文檔十嘿,1和2是一個(gè)同樣問題,3和4也是同樣的問題岳锁。
查看源碼后發(fā)現(xiàn)SAMKeyChain有一個(gè)設(shè)置選項(xiàng):
kSecAttrAccessibleWhenUnlocked 設(shè)置為這個(gè)屬性即可