我花了两天时间没有阅读和测试,因为有很多关于这个主题的信息。 不幸的是我还没有找到解决办法。我无法实现自己的身份验证,因为这对我想要解决的问题没有帮助(请参阅问题末尾的背景资料)。
这是我目前最好的方法:
感谢 https://stackoverflow.com/a/8677177/1443733,我正在生成 UUID并按照 SwiftKeychainWrapper ( https://github.com/jrendel/SwiftKeychainWrapper ) 的建议将其存储在 KeyChain 中
简短的代码是:
let stored = KeychainWrapper.stringForKey("UUID")
if stored != nil {
Helper.log(TAG, msg: "retrieved from keychain: \(stored!)")
} else {
let theUUID = CFUUIDCreate(nil)
let str = CFUUIDCreateString(nil, theUUID)
Helper.log(TAG, msg: "generated UUID: \(str)")
let ret = KeychainWrapper.setString(str, forKey: "UUID")
Helper.log(TAG, msg: "setkeychain: \(ret)")
}
但存储在钥匙串(keychain)中的 UUID 似乎是按设备而不是按商店 ID。
当我像上面那样存储 UUID 并在设备上使用不同的 Store ID 登录时 KeychainWrapper.stringForKey("UUID")
仍然返回其他用户的值。
这不是一种将值存储在商店 ID 钥匙串(keychain)中的方法吗?
看来我很接近所以我希望有人能指出我正确的方向。
如果这种方法(使用钥匙串(keychain))不能成功,请告诉我。
我想您也可以问一个不同的问题:是否有一些我可以读取/生成的神秘数据或随着设备上当前使用的商店 Id 而改变的商店?
哦...和 Swift 示例更受欢迎 ;)
背景信息: 我在我的应用程序中使用 IAP,并希望在收据刷新有效后保存用户的 Store-Id。 每次启动应用程序时,我都会检查当前的 Store-Id 是否与保存的相同。如果不是,我会立即触发收据的刷新。如果失败,我会回退到该应用程序的免费版本。
最佳答案
iOS 设备不支持多用户。
如果你想区分用户,你必须在你的应用程序中做到这一点,也许需要用户登录。然后在钥匙串(keychain)中为每个用户 ID 保存一个 UUID。
关于iOS 7+ : Unique identifier per device<->Store-ID (user) combination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27979931/