2017-09-25 121 views
1

我已經爲此創建了一個新問題,因爲這更關聯到Xamarin。當我偶然發現StackOverflow中的這個question時,我正在尋找一種在iOS中唯一標識設備的方法。我花了一段時間才弄清楚如何在Keychain中添加任何東西,而我偶然發現了這個questionXamarin iOS爲KeyChain增加價值,可以通過設備上的所有應用程序訪問

經過所有的絆腳石,我想出了this一段代碼來生成唯一的令牌。

var s = new SecRecord(SecKind.GenericPassword) 
      { 
       AccessGroup = "kSecAttrAccessGroupToken", 
       ValueData = NSData.FromString(value), 
       Generic = NSData.FromString(key) 
      }; 
      SecKeyChain.Add(s); 

現在的問題是,即使我將這個條目添加到鑰匙串,我無法找到它。我也有興趣知道我是否正確使用kSecAttrAccessGroupToken。

我Enlistments.plist文件

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>keychain-access-groups</key> 
    <array> 
     <string>my app id</string> 
     <string>kSecAttrAccessGroupToken</string> 
    </array> 
</dict> 
</plist> 

回答

1

kSecAttrAccessGroupToken只有CryptoTokenKit智能卡驅動程序是可寫的。應用程序可以使用該屬性查詢鑰匙串,以查找存儲在特定智能卡上的項目。該屬性不適用於其他任何用途。

10.3.x測試版中存在一個錯誤,它允許任何應用程序也寫入它,但已被修補。

回覆:https://forums.developer.apple.com/thread/72271

+0

感謝您的回覆。你有沒有看過我發佈的Gist?我對它做了一些修改,現在就開始工作。所以當我卸載應用程序並重新安裝時,我仍然能夠獲得Guid。但是現在你說了這些,我是否在做一些反對蘋果政策的事情? –

+0

@MadhavShenoy 1)你在iOS 10.2或更低版本上做這個? 2)你在物理設備上測試嗎? (模擬器不遵循運行時間規則) – SushiHangover

+0

好的,讓我測試一下這個設備。所以這意味着根本無法在iOS上唯一標識設備........ –

相關問題