UIDevice uniqueIdentifier устарел - что теперь делать? - PullRequest
494 голосов
/ 09 августа 2011

Только что выяснилось, что свойство UIDevice uniqueIdentifier устарело в iOS 5 и недоступно в iOS 7 и выше. Похоже, что альтернативный метод или свойство недоступны или ожидаются.

Многие из наших существующих приложений тесно зависят от этого свойства для уникальной идентификации конкретного устройства. Как мы можем решить эту проблему в будущем?

Предложение от документации в 2011-2012 было:

Особые замечания

Не используйте свойство uniqueIdentifier. Для создания уникального идентификатора в своем приложении вы можете вызвать функцию CFUUIDCreate, чтобы создать UUID, и написать это в базу данных по умолчанию с использованием класса NSUserDefaults.

Однако это значение не будет таким, если пользователь удаляет и переустанавливает приложение.

Ответы [ 32 ]

0 голосов
/ 26 ноября 2013
+ (NSString *) getUniqueUUID {
    NSError * error;
    NSString * uuid = [KeychainUtils getPasswordForUsername:kBuyassUser andServiceName:kIdOgBetilngService error:&error];
    if (error) {
    NSLog(@"Error geting unique UUID for this device! %@", [error localizedDescription]);
    return nil;
    }
    if (!uuid) {
        DLog(@"No UUID found. Creating a new one.");
        uuid = [IDManager GetUUID];
        uuid = [Util md5String:uuid];
        [KeychainUtils storeUsername:USER_NAME andPassword:uuid forServiceName:SERVICE_NAME updateExisting:YES error:&error];
        if (error) {
            NSLog(@"Error getting unique UUID for this device! %@", [error localizedDescription]);
            return nil;
        }
    }
    return uuid;
}
0 голосов
/ 05 июня 2013

Не используйте эти библиотеки - libOmnitureAppMeasurement, он использует uniqueIdentifier, который яблоко больше не поддерживает

...