iOS 6時代のUUID事情

今日リリースされたiOS 6, マップやPassbookが目立った新機能だが、UDID/UUID周りについても重要な変更が行われている。
これらについてまとめておく。

UDIDへのアクセスは基本的にNG.
UDIDへのアクセスはiOS 5から非推奨とされている。
公式リファレンスでは、CFUUIDRefを生成し、アプリ内で保存するなどの方法をこれまでには紹介されていたが、iOS 6ではフレームワーク側でUDIDにかわるID(どれもUUID)を用意している。

+ [NSUUID UUID]
従来のCFUUIDRefのObjective-C版と考えていいだろう。クラス・メソッドの+UUID を呼び出せば、UUIDが新規に生成される。
NSString、バイト列に変換するインスタンス・メソッドも用意されている。
ただし、CFUUIDRefとToll-Free bridgeではない。

UIDevice.identifierForVendor
デバイス固有であるが、ベンダごと(Team IDごと)で異なるUUIDを返す。

ASIdentifierManager.advertisingIdentifier
デバイス固有で、すべてのアプリで共通のUUIDを返す。強力なスーパー・クッキーとして機能する。
広告ネットワークのSDKを開発することを想定されている。
advertisingIdentifierを広告目的で利用する場合、ASIdentifierManager.advertisingTrackingEnabledを参照し、ユーザがトラッキングを許可しているか、確認する必要が有る。ユーザが許可していない場合、このUUIDをトラッキング用途で利用してはならない。
この機能はUIKitには含まれず、利用するにはAdSupport.Frameworksをリンクしなければならない。
なお、advertisingIdentifierをトラッキング目的で提供することは、標準では許可されている。提供を拒否したい場合は、iOSの設定アプリから情報>アドバタイズ>Ad Trackingを制限 でオプト・アウトする必要が有る。

追記

iOS Developer Centerのソースは以下の通り

NSUUID Class Reference

UIDevice Class Reference

Ad Support Framework Reference

追記その2

UIDevice.identifierForVendorとASIdentifierManager.advertisingIdentifierはデバイスの初期化等で再生成され、値が変化する可能性がある。値が変化するタイミングについては、現在調査を進めている。

広告

現在コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。