我正在Xamarin.iOS中創建一個應用程序,它使用來自安全的SecKeyChain。其中,我試圖將用戶的憑證保存爲KeyChain的SecRecord,然後再訪問它。當應用程序啓動時,它會檢查KeyChain中是否有任何已保存的憑據,並決定是否提示手動登錄。SecKeyChain項目和SecRecord設備和模擬器之間的調試差異,Xamarin iOS
當SecKeyChain.Add被調用時,它返回成功。但是,應用程序SecKeyChain.QueryAsRecord的強制關閉失敗並顯示錯誤代碼AuthFailed。這隻發生在設備上,而模擬器成功。
的另一個問題是關係到創建SecRecord。調試Device時創建的對象與Simulator之間存在嚴重的差異。創建SecRecord的代碼是:
var credentialsRecord = new SecRecord(SecKind.GenericPassword)
{
Generic = NSData.FromString("record"),
Label = credentials.Username,
Account = credentials.Username,
Service = CredentialsStorageServiceName,
ValueData = NSData.FromBytes(credentials.Password.ToIntPtr(), Convert.ToUInt32(credentials.Password.Length()) * 2),
AccessControl = new SecAccessControl(SecAccessible.WhenPasscodeSetThisDeviceOnly, SecAccessControlCreateFlags.TouchIDCurrentSet)
};
var statusCode = SecKeyChain.Add(credentialsRecord);
在entitlements.plist,我已經啓用了鑰匙串訪問組,並添加了一個名爲同我虛擬的Xcode project's包標識符組。在項目選項 - > iOS軟件包簽名中,我有一個簽名標識和一個設置配置文件,自定義權利字段爲空。
我是否缺少某些東西來訪問設備的鑰匙串,或者是否與其他問題有關?
請讓我知道,如果我失去了一些東西,並提前謝謝你。