UDID と UUID の違いに注意することが重要です。
UDID「一意のデバイス ID」はハードウェア固有です。特定のデバイスで変更されることはありません。このため、これはプライバシー上の懸念となり、Apple はこれを使用しようとするアプリをブロックしています。その結果、Apple は、特に広告の使用のために、オプトアウト可能な「デバイス ID」ハッシュを生成しました。この新しい ID ハッシュは IFA と呼ばれ、iOS 6.0 以降で使用できます。
UUID「普遍的に一意の ID」はハードウェア固有ではありません。これは、デバイスを識別するために使用されるハッシュです。特に絶対値ではありません。たとえば、PhoneGap はデバイスのプロパティに基づいて UUID を生成します。これは、device.uuid を実行したときに得られるものです。アプリを削除して再インストールすると、新しい ID ハッシュが取得されます。UUID は Apple によってブロックされていません。
最善の解決策は、OpenUDID を iOS < 6.0 のバックアップとして IFA を使用することだと思います。
使用するコードは次のとおりです。IFA が利用できない場合は、OpenUDID を取得します。[[OpenUDID をインストールする必要があります。詳細については、https://github.com/ylechelle/OpenUDID をご覧ください。]]
NSString* uuid = nil;
if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) {
// IOS 6 new Unique Identifier implementation, IFA
uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
} else {
// Before iOS6 (or if IFA disabled) you shoud use a custom implementation for uuid
// Here I use OpenUDID (you have to import it into your project)
// https://github.com/ylechelle/OpenUDID
NSString* openUDID = [OpenUDID value];
uuid = [OpenUDID value];
}