Возможный дубликат:
UIDevice uniqueIdentifier устарел - Что делать теперь?
Как я надеюсь, вы знаете, uniqueIdentifier
in UIDevice
устарел в iOS5. Я ищу в основном те же функции для iOS5.
Из документации я понимаю, что Apple хочет, чтобы мы (разработчики) создали наш собственный UUID (используя CFUUIDCreate
, я думаю) и сохранили его в NSUserDefaults
. Это, однако, заставляет меня немного дрожать и совсем не чувствовать себя в безопасности. Чувствует себя немного бессмысленным, чтобы иметь UUID в этом случае.
Причина, по которой мне нужен UUID, заключается в том, что я отправляю информацию о связке, включая UUID, на мои серверы в процессе auth и хотел бы пропустить некоторые шаги, если сервер может "угадать", с кем пользователь в следующий раз приложение запускается или переустанавливается, или другое приложение реализует мою библиотеку. CFUUIDCreate
, похоже, не помогает мне в этом.
Я быстро просмотрел gekitz, но, как я понимаю, он основывает его исключительно на MAC-адресе Ethernet-карта в телефоне. Это не подходит, так как я смутно чувствую, что MAC-адрес изменчив. uniqueIdentifier
в UIDevice
был
Буквенно-цифровая строка, уникальная для каждого устройства на основе различных деталей оборудования.
Currenly Я написал этот код, который извлекает UUID. Но как только я чищу в XCode и переустанавливаю приложение на телефоне, я получаю новый UUID.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *UUID = @"";
if (![defaults valueForKey:@"UUID"])
{
CFUUIDRef UUIDRef = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef UUIDSRef = CFUUIDCreateString(kCFAllocatorDefault, UUIDRef);
UUID = [NSString stringWithFormat:@"%@", UUIDSRef];
[defaults setObject:UUID forKey:@"UUID"];
}
else {
UUID = [defaults valueForKey:@"UUID"];
}
[deviceInformation setObject:UUID forKey:@"UUID"];
Подводя итог, мой вопрос следующий:
Есть ли какой-то солидный способ создания UUID, основанный на устройстве, которое "трудно" вмешиваться, и дает мне в качестве получателя немного чего-то, на что можно рассчитывать и доверять? Это не должно быть основано на устройстве, может быть основано на приложении в качестве UUID приложения, если оно остается неизменным после повторной установки.