2014-09-01 6 views
1

Как создать такой же (уникальный) UUID и как я могу использовать его для всех устройств IOS. В моем коде UUID отличается на разных устройствах.Создание уникального UUID для всех устройств в IOS?

Мой код получения UUID есть.

NSString* uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; // IOS 6+ 
NSLog(@"UUId:: %@", uniqueIdentifier); 

Благодаря Shabeer

+2

Я думаю, что слово «уникальный» говорит все это ... – Atomix

+0

Что означает уникальный UUID для всех устройств iOS? пожалуйста, предоставьте дополнительную информацию. –

+0

На основе UUID мне нужно выполнить транзакцию между двумя приложениями. – sabir

ответ

4

Этот метод создаст уникальную строку для каждого устройства. Здесь SGKeyChain - это оболочка для ключей. Вы можете написать это самостоятельно.

+ (NSString *) uniqueDeviceIdentifier 
{ 

NSString *deviceUUID = [[SGKeyChain defaultKeyChain] stringForKey:@"uniqueId"]; 

    if (!deviceUUID) { 

     if (!deviceUUID.length) { 

    NSString *deviceUUID = @""; 

    CFUUIDRef uuidRef = CFUUIDCreate(NULL); 

    CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef); 

    CFRelease(uuidRef); 

    deviceUUID = [NSString stringWithFormat:@"%@",[NSString stringWithString:(__bridge_transfer NSString *)uuidStringRef]]; 

[[SGKeyChain defaultKeyChain] setObject:deviceUUID forKey:@"uniqueId" accessibleAttribute:kSecAttrAccessibleAlways]; 

    } 
}  
    return deviceUUID; 
} 
+0

это изменение для каждого устройства. – sabir

+0

Этот ключ необходимо сохранить в брелках для сохранения в постоянном режиме, иначе он будет отличаться от идентификатора каждый раз. –

+0

Вы правы. Atif. Я внес необходимые изменения ... –

1

Что касается получения уникального идентификатора, я совсем как следующий код:

[[NSProcessInfo processInfo] globallyUniqueString] 

Это использует дату, и DeviceId сделать большой UniqueID каждый раз , Что касается обмена ею по устройствам, это невозможно. Каждое устройство уникально, поэтому вы не можете ожидать, что ваш код будет определять, кто принадлежит к ним. Если вы хотите, чтобы сделать это, то вы можете это сделать одним из трех способов:

  1. Вы можете иметь локальный экран входа в систему, где вы используете имя (возможно, зашифрованная) в качестве UniqueID. Это будет использовать жестко закодированный скремблер, чтобы уникальный идентификатор был одинаковым для каждого имени, но отличался для каждого пользователя.

  2. Вы можете использовать серверный сервер, например Parse, для хранения уникального идентификатора для каждого человека. Затем вы можете войти в систему на своем устройстве, и UUID будет использоваться совместно с устройствами.

  3. И, наконец, если вы просто хотите случайно выглядящую строку (например, 463GH529-GJRH-FRH4-FH53-58FH3), вы можете жестко выбрать тот, который может использоваться на КАЖДОМ устройстве, но это побеждает цель UUID, поскольку все будет иметь тот же самый - не очень уникальный!

Надеюсь, один из этих пунктов будет вам полезен.

+0

Спасибо за ваш повтор. Основанный на UUID, как я могу найти устройство bluetooth для шкафа. – sabir

+0

@sabir Я не много работал с bluetooth, но я много сделал с iBeacons, так что, надеюсь, концепция такая же. Вы проверяете каждое устройство Bluetooth и храните их в массиве. Затем вы проходите через массив один за другим и проверяете тот, у кого самый сильный сигнал (или даже лучше, может быть значение расстояния, которое вы можете использовать, чтобы увидеть, какой из них ближе, хотя я не могу этого гарантировать). Когда у вас есть устройство с самым сильным сигналом, просто получите UUID и сделайте то, что вам нравится! –