我花了两天没有阅读和测试,因为有很多关于这个主题的信息。 不幸的是我还没有找到解决方案。我无法实现我自己的身份验证,因为这对我想要解决的问题没有帮助(请参阅问题末尾的背景知识)。
这是我目前最好的方法:
我正在生成一个UUID感谢https://stackoverflow.com/a/8677177/1443733并将其存储在KeyChain中,如SwiftKeychainWrapper(https://github.com/jrendel/SwiftKeychainWrapper)所建议的那样
简短而又甜蜜的代码是:
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)")
}
但是存储在钥匙串中的UUID似乎是每个设备而不是每个商店ID。
当我存储上述UUID并使用设备KeychainWrapper.stringForKey("UUID")
上的其他商店ID登录时,仍会返回其他用户的值。
他们不是一种在store-id钥匙串中存储值的方法吗?
我似乎非常接近,所以我希望有人能指出我正确的方向。
如果这种方法(带钥匙串)不能成功,请告诉我。
我估计你也可以问一个不同的问题:是否有一些我可以阅读/生成的神秘数据,或者是一个随设备当前使用的商店ID而变化的商店?
哦...和Swift示例优先;)
Backgroundinfo: 我在我的应用程序中使用IAP,并希望在刷新收据有效后保存用户的Store-Id。 在应用程序的每次启动时,我都会检查当前的Store-Id是否与保存的相同。如果不是,我立即触发刷新收据。如果失败,我会回到应用程序的免费版本。
答案 0 :(得分:1)
iOS设备不支持多个用户。
如果您想要区分用户,则必须在应用中执行此操作,可能需要使用用户登录。然后在Keychain中为每个用户ID保存一个UUID。
答案 1 :(得分:0)
由于NSUserdefaults临时存储UUID.so,在取消应用程序并再次安装后,UID会发生变化。因此,UUID必须存储在钥匙串中