Каждый раз, когда мое приложение обновляется из App Store, небольшое количество пользователей по какой-то причине получает новый идентификаторForVendor. Мои пользователи не регистрируются и не заходят в систему. Все они анонимны, поэтому мне нужно разделить их через идентификаторы поставщиков.
Я подумал, что на некоторых устройствах может быть недостаточно места, в результате чего приложение будет удалено и переустановлено, но это не так, поскольку в последнем обновлении мой друг имел более 2 ГБ свободного пространства.
Я знаю, что идентификатор ForVendor изменен для пользователя, который удаляет и переустанавливает приложение. Но это не так, поскольку приложение просто обновляется.
В чем проблема? Странная часть заключается в том, что этого еще не было для разработчиков команды разработчиков. Или есть пользователи, которые не испытывали этой ошибки после бесчисленных обновлений приложений, обновлений ОС и т.д. Это происходит только с небольшим процентом пользователей. Все пользователи 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 как backend, а deviceID используется как имя пользователя. Когда эта небольшая часть пользователей испытывает эту ошибку, я вижу новое имя пользователя и созданную учетную запись.