Как использовать идентификаторForVendor в ios5.?

У меня есть следующий код для получения идентификатора

        deviceName = [[UIDevice currentDevice]uniqueIdentifier];

Но я получил предупреждение uniqueIdentifier устарел в ios5.

так как получить значение идентификатора в ios5?

Ответы

Ответ 1

Вы можете использовать следующий код

if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) {
    // This will run if it is iOS6 or higher
    return [[[UIDevice currentDevice] identifierForVendor] UUIDString];
} else {
   // This will run before iOS6 and you can use openUDID or other 
   // method to generate an identifier
}

И таким образом вы можете сохранить предыдущие минимальные требования.

Этот идентификатор уникален для всех приложений от одного поставщика. Если вам нужен уникальный идентификатор устройства, вам необходимо использовать:

if (!NSClassFromString(@"ASIdentifierManager")) {
    // This will run before iOS6 and you can use openUDID, per example...
    return [OpenUDID value];
}
return [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];

Предупреждение. На iOS6 есть ошибка, которая сообщает "нулевой" идентификатор, если устройство было обновлено "по воздуху" - Подробнее

Ответ 2

в ios 7 вам лучше использовать [UIDevice identifierForVendor] или вы столкнулись с проблемой, потому что возвращается только фальшивый MAC-адрес.

Ответ 3

Вы больше не можете получить UUID. Это запрещено, ваше приложение будет отклонено Apple.

Ответ 4

Метод, продемонстрированный J.Costa​​strong > , является хорошим для iOS 6.

Но если вы хотите сохранить один и тот же идентификатор в своем приложении, когда ваш пользователь обновит свой телефон или в нескольких ваших приложениях (если у них нет одинакового идентификатора семени Bundle), используйте это: https://github.com/blackpixel/BPXLUUIDHandler

Очень полезно!