iOSのidentifierForVendorとadvertisingIdentifierについて
お仕事で調べる必要があったのでメモ。
identifierForVendor
https://developer.apple.com/reference/uikit/uidevice/1620059-identifierforvendor?language=objc
- アプリのベンダー(開発元)ごとにデバイスが一意に見えるように発行されるアルファベットと数字からなる文字列
- もう少し具体的に言うと、アプリのベンダーを識別するためにvendor IDというものを発行していて、vendor IDに対して一意
- nilになるような場合
- しばらく待ってから再び値を取得し直す
- どういう事例があるかと言うと、ユーザーがアンロックしているのに、デバイスが再起動しているとき(ユーザーがアンロックしている状態で起動したとき?)
- 同じベンダーのアプリを全部アンインストールしてから再インストールすると値が変わる
- 同じベンダーのアプリが1つでも残っていたら値が変わらない
ASIdentifierManager
https://developer.apple.com/reference/adsupport/asidentifiermanager
- 広告を提供する専用のIDへのアクセスを提供
- これはユーザーが広告トラッキングを制限しているかどうかを示すフラグ
- このクラスは広告を提供するシステムを実装する開発者によって利用されることを想定
- 一般のアプリ開発者は、彼らが開発する広告用SDKとのリンクのためであっても、このクラスに直接メッセージを送る必要はない
- 広告IDの取得方法
advertisingIdentifier
https://developer.apple.com/reference/adsupport/asidentifiermanager/1614151-advertisingidentifier
- アルファベットの文字列でデバイス毎に一意になるように発行される数字の列
- UIDeviceから取得できるidfvとは異なり、この値はすべてのベンダーのアプリ内で同一の値を返す
- このIDは変化するかもしれないので、キャッシュしてはいけない
- たとえば、ユーザーがデバイス(との連携?)を消したなどで
- 広告トラッキングが制限されている場合、iOS10.0かそれ以降ですべて0の文字列になっている
- 値がnilの場合
- この値は再取得される
- これが起きる理由としてはユーザーがアンロックしているのに、デバイスが再起動しているとき(ユーザーがアンロックしている状態で起動したとき?) (IFDVと同様)