Appleがデバイスを識別するUDIDにアクセスするアプリをRejectしているようです。TechCrunch Japanを始めとして多くのサイトで話題になっています(TechCrunch Japan – ご注意!プライバシーへの懸念の高まりを受けてAppleはデバイスIDにアクセスするアプリを拒絶し始めた)。Appleは、以前から将来的にUDIDの使用を止めると言っていましたが、それがついに現実のものとなりました。
UDID
UDIDとは
UDID(Unique Device Identifier)は、デバイスを識別するユニークなIDとして多くのアプリで用いられています。 iTunes で具体的な値を確認する事が出来ます。
※デバイス接続後、iTunesでデバイスを選択し、「シリアル番号」をクリックするとUDIDが表示されます。
UDIDの使用が禁止される理由
広告業者(モバイル広告提供者)がこのUDIDを使って、特定の利用者(UDID)がどのような広告にアクセスし、どんなアプリを使ったり買ったりしているかという個人情報を取得できます。そして、利用者がこれを防ぐ手段がないのでプライバシーの侵害に繋がると米国議会から非難されたからです。
アプリ開発者にとって
iCloudやWebでデータを共有するアプリでは、デバイスを識別するIDはあると便利なものです。複数のデバイスでデータを操作する可能性があるので、同じ内容のデータを同時に作成した場合、どのデバイスで作成されたデータなのかがわからないとデータがダブってしまいます。そこで、UDIDのようなユニークなIDを使って、どのデバイスで作成されたデータかを明確にしてデータのダブりを回避したりします。つまり、アプリ開発者にとっては、データを管理する上で、デバイスをまたいでもユニークになるIDが必要なのです。
UDIDにかわるもの
Macアドレスはだめ
TechCrunchの記事によると、「Wi-FiのMACアドレスの利用を考えている人もいるようだが、UDIDと同様の批判が予想される」としています。Appleの審査は通るかもしれないけれども、仕組み的にはUDIDと同じで利用者が情報を取得されることを拒否することができないからでしょうね。
OpenUDID
Appsfireというモバイルアプリマーケティング会社は、オープンソースのOpenUDID の使用を主張しているそうです。 github – ylechelle / OpenUDID
UUID
Appleは、UDIDの代わりにUUID(Universally Unique Identifier)を使う事を推奨しています。
※Macでりんごマーク >「このMacについて」からハードウェアを見ると、「ハードウェアUUID」と表示されます。
ソースコードでUUIDを利用する場合は、次のメソッドでUUIDを取得できます。
+ (NSString *)UUIDString { CFUUIDRef uuid = CFUUIDCreate(NULL); NSString *uuidStr = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, uuid); CFRelease(uuid); return uuidStr; }
ここで取得されるUUIDは、世界中で1つしかないユニークなIDですが、上記のメソッドでUUIDを取得するたびに異なるIDになるので注意が必要です。
関連記事
- 2013/01/17 iOS 6で簡単になったUUIDの取得
何でUDIDだとプライバシー的に問題有って、ハードウェアUUIDだと大丈夫なんですか?
UUIDは、取得するたびに違う値になります。そのため、アプリ内からスクリーンショットにあるようなハードウェアUUIDと同じ値を取得することはできず、個人の行動を厳密に追跡できないからではないでしょうか。
OpenUDIDのソースを昨日見てみたのですが、まだまだ実用に耐える品質では無かったので
お勧めはしません。
IDが必要ならやはりUUIDを使う方法が一番良いと思います。
たまたま昨日記事を書きましたのでよければ参考までにどうぞ。
http://ameblo.jp/ryoji4321/entry-11204718235.html
なるほど、参考になりました。