UDIDとUUIDの違いに注意することが重要です。
UDID「一意のデバイスID」はハードウェア固有のものです。特定のデバイスで決して変更されることはありません。このため、プライバシーの問題となり、Appleはこれを使用しようとしているアプリをブロックしています。その結果、アップルはオプトアウト可能な「デバイスID」ハッシュを生成しました。特に、広告の使用に適しています。この新しいIDハッシュはIFAと呼ばれ、iOS 6.0以降で利用可能です。
UUID「ユニバーサルユニークID」は、ハードウェアに固有のものではありません。これは、デバイスを識別するために使用されるハッシュです。特に絶対値ではない。たとえば、PhoneGapはデバイスのプロパティに基づいてUUIDを生成します。これはdevice.uuidを実行したときに得られるものです。アプリを削除して再インストールすると、新しいIDハッシュが取得されます。 UUIDはAppleによってブロックされていません。
あなたのケースでは、iOS < 6.0のバックアップとしてOpenUDIDを使用して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];
}
私は同様のニーズがありました。 1つのハッキングされたアプリが、元のUUIDの代わりに生成されたUUIDを毎回送信するとどうなりますか?本当にインストールされた元のアプリケーションからUUIDを特定する方法はありますか? –
ユーザーがOSを5.0から6.0にアップデートするとどうなりましたか? OpenUDIDから最初に取得したUDID、次にios 6以降ではidentifierForVendorを使用します。 – Developer