每次我的应用程序从App Store更新时,由于某种原因,少数用户会获得新的identifierForVendor.我的用户没有注册或登录.它们都是匿名的,因此我需要通过供应商ID将它们分开.
我认为在某些设备上可能没有足够的空间,导致应用程序被删除并重新安装,但事实并非如此,因为在上一次更新中,我的一个朋友有超过2GB的空闲空间.
我知道删除并重新安装应用程序的用户更改了identifierForVendor.但这不是这里的情况,因为应用程序刚刚更新.
问题是什么?奇怪的是,尚未发现开发团队设备.或者仍然有用户在无数的应用更新,操作系统更新等之后没有遇到此错误.这只发生在一小部分用户身上.所有用户都是iOS7 +,它适用于不同的设备型号和iOS版本.
我使用此代码获取其ID:
static let DeviceId = UIDevice.currentDevice().identifierForVendor.UUIDString
Run Code Online (Sandbox Code Playgroud)
然后我将它们保存到NSUserDefaults中:
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "User" + DeviceId)
NSUserDefaults.standardUserDefaults().synchronize()
Run Code Online (Sandbox Code Playgroud)
然后我会在每次新登录时检查用户是否存在:
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
}
}
Run Code Online (Sandbox Code Playgroud)
如果用户确实存在,则启动登录过程.如果用户不存在,则向他们显示注册过程.我使用Parse.com作为后端,deviceID用作用户名.当少量用户遇到此错误时,我会看到一个新用户名和一个新帐户.
我们目前正在使用identifierForVendoriOS6引入的.现在iOS7发布了,我想知道在更新过程之后这个标识符对于我的应用程序是否保持不变.
如果我用iOS7恢复我的设备,那么它将明显改变,因为它将是一个新的开始.
通过iTunes/OTA更新怎么样?