每次我的应用程序从App Store更新后,由于某些原因,一小部分用户会获得一个新的identifierForVendor。我的用户不注册或登录。他们都是匿名的,所以我需要通过他们的供应商ID来区分他们。
我考虑过可能是某些设备上空间不足导致应用被删除并重新安装,但这不是问题所在,因为在最近一次更新中,我的一个朋友有超过2GB的空余空间。
我知道如果用户删除并重新安装应用程序,则identifierForVendor将更改。但在这种情况下,应用程序只是更新,并没有被删除和重新安装。
问题可能出在哪里?奇怪的是,开发团队的设备还没有出现这种情况。或者仍然有用户在无数次应用程序更新,操作系统更新等之后没有遇到这个bug。这只发生在少数用户身上。所有用户都是iOS7+,它发生在不同的设备型号和iOS版本上。
我使用下面的代码获取他们的ID:
我考虑过可能是某些设备上空间不足导致应用被删除并重新安装,但这不是问题所在,因为在最近一次更新中,我的一个朋友有超过2GB的空余空间。
我知道如果用户删除并重新安装应用程序,则identifierForVendor将更改。但在这种情况下,应用程序只是更新,并没有被删除和重新安装。
问题可能出在哪里?奇怪的是,开发团队的设备还没有出现这种情况。或者仍然有用户在无数次应用程序更新,操作系统更新等之后没有遇到这个bug。这只发生在少数用户身上。所有用户都是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作为后端,并将设备ID用作用户名。当这少量用户遇到此错误时,我看到一个新的用户名和一个新帐户被创建。