gpt4 book ai didi

ios - 保存在 iOS 钥匙串(keychain)中的 deviceid 是否会在使用同一 iCloud 帐户的所有设备上同步?

转载 作者:行者123 更新时间:2023-11-30 12:22:05 30 4
gpt4 key购买 nike

即使在重新安装应用程序后,我也希望设备具有相同的设备 ID。我打算将其保存到钥匙串(keychain)并每次都检索它。我想知道钥匙串(keychain)数据是否会使用相同的 iCloud 电子邮件 ID 在所有设备之间同步。

我在此 downloadable_link 中使用 keychainwrapper .

最佳答案

这就是我最终所做的。

我了解到相同的 UUID 将在具有相同 iCloud 帐户的所有设备之间共享。(对此不确定。)

我必须限制每个电子邮件 ID 最多 3 台设备的应用程序登录。如果钥匙串(keychain)数据会同步,那么我就不能这样做。如果我有 3 部不同的 iPhone,则仅当用户使用相同的 icloud 帐户时,才会将其视为单个设备。

经过一番谷歌搜索后,我发现了 SAMKeychain 。它有一个名为 synchronizationmode 的属性,我认为该属性可以防止钥匙串(keychain)键/值将其同步到 iCloud。

我使用下面的代码生成UUID。

func UUID() -> String {

let bundleName = Bundle.main.infoDictionary!["CFBundleName"] as! String
let accountName = Bundle.main.bundleIdentifier! + String(Bundle.main.bundleIdentifier!.characters.reversed()) // just one extra layer of protection.. :p

var applicationUUID = SAMKeychain.password(forService: bundleName, account: accountName)

if applicationUUID == nil {

applicationUUID = (UIDevice.current.identifierForVendor?.uuidString)!

// Save applicationUUID in keychain without synchronization
let query = SAMKeychainQuery()
query.service = bundleName
query.account = accountName
query.password = applicationUUID
query.synchronizationMode = SAMKeychainQuerySynchronizationMode.no

do {
try query.save()
} catch let error as NSError {
print("SAMKeychainQuery Exception: \(error)")
}
}

return applicationUUID!
}

您可以检查 swift 3 中的示例应用程序 here在GITHUB。如果有人有更好的答案,请告诉我。

注意:官方 github 页面上的 SAMKeychain 对我来说无法正常工作。请使用我在 UniqueUUIDAPP 中使用的那个。我必须做一些代码注释才能使其工作。

关于ios - 保存在 iOS 钥匙串(keychain)中的 deviceid 是否会在使用同一 iCloud 帐户的所有设备上同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44680928/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com