AppleはiOS6のプライバシー設定を変更し、デバイスのUUID(UDID)を廃止します。 WWDCのプレゼンテーションとドキュメントによると、UDIDの代わりにUIDevice
クラスに2つの代替があります。
-identifierForVendor
-identifierForAdvertising
-identifierForVendor
は-identifierForAdvertising
よりも劣っていると思われます。ベンダーからアプリを最後にアンインストールすると、「すべてのコンテンツと設定を消去」することでリセットされるからです。
-identifierForVendor
が-identifierForAdvertising
より優れている利点は何ですか?
重要な注意事項:
AppleはiOS 6.0をリリースしたばかりで、NDAは解除されました。
参照するコードをプリエンプティブに含めた開発者向け
[[UIDevice currentDevice] identifierForAdvertising]
このメソッドは[〜#〜] not [〜#〜]iOS 6に含まれています。上記のメソッドを使用すると、アプリは(ほとんどおそらく)クラッシュして拒否されます!
代わりに、AppleはメソッドASIdentifierManager
を含む新しいクラスadvertisingIdentifier
を作成しました。これは Apple docs です:
ユーザーは、携帯電話での広告追跡の使用を制限できます。 オプトアウトメカニズムに関するこの記事 [設定]> [全般]> [バージョン情報]> [広告]を参照してください。
新しいASIdentifierManager
クラスにはadvertisingTrackingEnabled
プロパティがあり、ユーザーが広告トラッキングを制限しているかどうかに応じてtrueまたはfalseを返します。デバイスの広告識別子は、オプトアウトに関係なくadvertisingIdentifier
プロパティによって返されますが、ユーザーがオプトアウトしている場合は識別子を使用する必要はありません。
したがって、identifierForVendorの利点は、ユーザーが広告トラッキングのオプトインまたはオプトアウトに関係なく、常にこのIDにアクセスして電話で使用する権利があることです。
Appleは、広告に関連しないものにidentifierForAdvertising
を使用する場合(つまり、identifierForAdvertising
広告ネットワークではない場合や、個人を特定できる可能性のある他のデータと同じリクエストでidentifierForAdvertising
を送信する場合でも、サーバーを所有します)。
私の疑いが正しければ、identifierForVendor
のidentifierForAdvertising
の利点は、アプリが拒否されないことです。
これらは、2つの異なる目的のための2つの異なるIDです。 identifierForVendorは、プッシュ通知を提供したり、ユーザーのアプリデータのサーバー側を更新したり(スコアやその他のデータが保存されているものなど)、特定のユーザー/デバイスにリンクするアプリを必要とするものそれら)。
。
VendorIDを使用します。これは非常に啓発的な記事です http://www.doubleencore.com/2013/04/unique-identifiers/
IOS 6でデバイスの一意の識別子に基づいてuniqueStringを作成するには:
#import <AdSupport/ASIdentifierManager.h>
NSString *uniqueString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"uniqueString: %@", uniqueString);
identifierForAdvertising
は追跡の点ではおそらく優れていますが、ユーザーによる現在または将来のオプトアウトの対象となる可能性があります。一方、identifierForVendor
はユーザーの対象になる可能性は低くなります。
これらのAPIは非常に不適切に設計されているため、-Appleはユーザーデバイスを識別することを望んでいません。
IdentifierForVendorの説明をご覧ください。
ユーザーが同じベンダーのすべてのアプリを消去すると、消去されます。 :(信頼性がありません-nilを返すことがあります(これが発生した場合、しばらくの間「待機」するように文書化するアドバイス。:(
彼らは明らかな解決策を使用せず、いつでも機能し、インストール/削除に依存しません-チームIDと連結された内部ハードウェアデバイスIDのSHA-1(またはその他のハッシュ)を返します。
ユーザーは、設定でいつでもidentifierForAdvertisingを変更できます。このベンダーのデバイスにアプリがもうない場合は、アプリの再インストール後にidentifierForVendorが変更されます。
ここに、代替または取得または永続的なクロスインストールデバイス識別子の最適なソリューションを示します。
説明: https://blog.onliquid.com/persistent-device-unique-identifier-ios-keychain/
知っておくべき重要なことは、identifierForVendorのバックアップは同じデバイスにしか復元できないことです。バックアップが別のデバイスに復元されると、識別子は消去されます。