iOS 7+ : Unique identifier per device<->Store-ID (user) combination

标签 ios uuid apple-id

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

这是我目前最好的方法:

感谢 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/

相关文章:

javascript - 如何在 SAP UI5 代码中生成 UUID?

ios - 如何防止多个用户在应用内购买时使用相同的 Apple ID

iphone - 轻按 UIBarButtonItem 时未调用操作

javascript - 如何在 iOS 上取消双击滚动手势?

android - 如何使用 estimote beacon android 在没有 UUID 的情况下开始测距?

ios - Xcode 8.1 显示 'try signing in again or contact apple support to resolve account access issue' 我该怎么办?

ios - 如何在应用开发和个人生活中使用不同的 Apple ID?

ios - Alamofire 附加数据

ios - "pushes"匹配 UIInterpolatingMotionEffect? (即访问 UIInterpolatingMotionEffect 上的 "physics")

java - 将 Java UUID 作为字节发送到 C++,然后通过 TCP 返回