CFUUIDСоздать UUID постоянно меняется - PullRequest
5 голосов
/ 21 марта 2012

Я начинающий разработчик приложений для iPhone и пытаюсь показать уникальный идентификатор iPhone или приложения на ярлыке с помощью кнопки IBAction. Я немного исследовал и знаю, что часть кода устарела и вместо него используется CFUUID. Код ниже - это то, что я использовал. Однако каждый раз, когда я прикасаюсь к кнопке IBAction, UUID меняется. Что я делаю не так?

CFUUIDRef udid = CFUUIDCreate(NULL);

NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid);

uuid.text= udidString;  

Ответы [ 3 ]

8 голосов
/ 21 марта 2012

Я думаю, вы неправильно поняли цель CFUUIDCreate(). Прочтите ее документацию , вы поймете.

Я думаю, API правильно выполняет свою задачу - универсальное созданиеуникальный идентификатор означает, что каждый раз, когда вы вызываете его, он случайным образом возвращает вам уникальный идентификатор.

5 голосов
/ 21 марта 2012

Вы можете использовать

[[UIDevice currentDevice] uniqueIdentifier]

Однако этот метод не рекомендуется. Чтобы получить уникальный идентификатор для каждого устройства, вы все равно можете использовать CFUUIDCreateString и сохранить выходные данные по умолчанию для пользователя. Загружайте это значение при каждом запуске приложения. Если приложение будет удалено, а затем переустановлено, это значение будет другим.

Если вам нужен уникальный идентификатор при установке приложения, вы можете использовать сетевой MAC-адрес.

4 голосов
/ 29 марта 2012

Как упоминалось выше, CFUUIDCreate предназначен для создания нового UUID при каждом запуске.Вы можете создать его и сохранить его в своем приложении, если хотите, или вы можете попробовать что-то вроде https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5 - в основном, он предоставляет функцию uniqueGlobalDeviceIdentifier для UIDevice, используя в качестве основы хеш-код MAC-адреса MD5.

[[UIDevice currentDevice] uniqueGlobalDeviceIdentifier]
...