gpt4 book ai didi

ios - 为什么 iOS 在应用更新时会得到一个新的 identifierForVendor?

转载 作者:技术小花猫 更新时间:2023-10-29 10:26:42 25 4
gpt4 key购买 nike

每次我的应用程序从 App Store 更新时,都会有一小部分用户出于某种原因获得新的 identifierForVendor。我的用户没有注册或登录。它们都是匿名的,所以我需要通过它们的供应商 ID 将它们分开。

我考虑过可能是某些设备上的空间不足,导致应用程序被删除并重新安装,但情况并非如此,因为在上次更新中我的一个 friend 有超过 2GB 的空闲空间。

我知道 identifierForVendor 已针对删除并重新安装应用程序的用户进行了更改。但这里不是这种情况,因为该应用程序刚刚更新。

可能是什么问题?奇怪的是,这还没有发生在开发团队的设备上。或者在无数次应用更新、操作系统更新等之后,仍然有用户没有遇到这个错误。这只发生在一小部分用户身上。所有用户都是 iOS7+ 并且它发生在不同的设备型号和 iOS 版本上。

我使用此代码获取他们的 ID:

static let DeviceId = UIDevice.currentDevice().identifierForVendor.UUIDString

然后我将它们保存到 NSUserDefaults 中:

NSUserDefaults.standardUserDefaults().setBool(true, forKey: "User" + DeviceId)
NSUserDefaults.standardUserDefaults().synchronize()

然后我在每次新登录时检查用户是否存在:

static func doesUserExist() -> Bool {
var userDefaultValue: AnyObject? = NSUserDefaults.standardUserDefaults().valueForKey("User" + DeviceId)

if defaultValue == true {
println("Userdefaults already has this guy, moving on")
FirstTime = false
return true
} else {
println("First time in the app!")
FirstTime = true
return false
}
}

如果用户确实存在,它会启动登录过程。如果用户不存在,它会向他们显示注册过程。我使用 Parse.com 作为后端,deviceID 用作用户名。当少量用户遇到此错误时,我会看到一个新用户名和一个新帐户已创建。

最佳答案

在 5 月到 7 月期间从应用商店更新应用时,存在影响 identifierForVendor 计算的错误。 Apple 声称他们已经解决了这个问题,并且推送另一个更新应该会在关键日期之前恢复原始值。引用:https://openradar.appspot.com/22677034

请注意,即使在 7 月之后的几周更新,一些用户仍然发现了这个问题。因此,仍有可能 bug 仍然存在,或者它可能在未来的任何时候重新出现。因此,如果您将此数据用作加密的一部分,最好将其保存到钥匙串(keychain)中。

关于ios - 为什么 iOS 在应用更新时会得到一个新的 identifierForVendor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30510921/

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