iOS 7+:每台设备的唯一标识符< - >商店ID(用户)组合

时间:2015-01-16 08:32:26

标签: ios uuid apple-id

我花了两天没有阅读和测试,因为有很多关于这个主题的信息。 不幸的是我还没有找到解决方案。我无法实现我自己的身份验证,因为这对我想要解决的问题没有帮助(请参阅问题末尾的背景知识)。

这是我目前最好的方法:

我正在生成一个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是否与保存的相同。如果不是,我立即触发刷新收据。如果失败,我会回到应用程序的免费版本。

2 个答案:

答案 0 :(得分:1)

iOS设备不支持多个用户。

如果您想要区分用户,则必须在应用中执行此操作,可能需要使用用户登录。然后在Keychain中为每个用户ID保存一个UUID。

答案 1 :(得分:0)

由于NSUserdefaults临时存储UUID.so,在取消应用程序并再次安装后,UID会发生变化。因此,UUID必须存储在钥匙串中

相关问题