2013/12/11

iOS7で追跡型広告識別子を取得する - [開発] - Advertising Identifier

iOS 7でサクッとAdvertising Identifierの取得確認をしてみました。
未だにUIDIDを取得して使おうとしている人はいないだろうと思いますが、おさらいしておくとUIDIDの取得はiOS5で非推奨となり、iOS6から無効となって広告用途のIDとしてAdvertising Identifier(追跡型広告識別子)が追加されました。
iOS6以降ではこの識別子を利用しなくてはいけません。

基本的にiOS6からiOS 7に変わって大きな変化はないのですが、iOS 7で今回取得してみました。

注意点

注意点として、識別子の取得制限とリセットがあります。

取得制限は、設定の「追跡型広告を制限」の状態を制限をチェックしてから利用してね、となっています。
しかし、ユーザがこの制限を有効にしていても識別子の取得は可能です。その用途としてはデバックやセキュリティ、不正行為の検出のためだそうです。
基本的にちゃんと制限の状態をチェックして、制限されていたら取得しない、制限されていなければ取得するとしておけば良いでしょう。チェックなしでも取得できてしまうため、問答無用で取得して利用しているアプリはリジェクトされるかもしれません。

リセットについては、この識別子がユーザによってリセットできてしまうという点です。
取得済みの識別子もユーザによってリセットされる可能性があります。

実装

1)AdSupport.frameworkをプロジェクトに追加
2)<AdSupport/ASIdentifierManager.h>をインポート
#import <AdSupport/ASIdentifierManager.h>
3)ASIdentifierManagerを利用して識別子を取得
ASIdentifierManager *aidManager = [ASIdentifierManager sharedManager];
if (aidManager.advertisingTrackingEnabled)  // 制限状態を確認
{
   NSString *id = aidManager.advertisingIdentifier.UUIDString;
 NSLog(“%@“, id);
}

簡単ですね。

以下のような36桁の文字列を取得できます。

087D0946-75E9-4346-97E8-D248CB12E76F

リセット方法

識別子のリセットは前述のようにユーザによって簡単にリセットができてしまいます。
また、明示的にユーザがリセット行った場合のほかに、制限のON/OFF切り替えによっても識別子はリセットされます。

UDIDのように端末固有の値ではないため、リセットされることを前提に値を取得するロジックにする必要があります。

リセットは設定アプリから行うことからできますが、iOS6とiOS 7では画面遷移が異なります。
また、リセットはiOS6.1から可能となったため、iOS6.1以前ではリセット機能がありません。

左図はiOS 7の場合です。
設定アプリ -> 「プライバシー」-> 「広告」
の順番で遷移します。

左図はiOS 6.0の場合です。
設定アプリ -> 「一般」-> 「情報」-> 「アドバタイズ」
の順場で遷移します。
(iOS6.1 以降はリセットが可能)








参考

ASIdentifierManager Class Reference
https://developer.apple.com/library/ios/documentation/AdSupport/Reference/ASIdentifierManager_Ref/ASIdentifierManager.html




Related Posts Plugin for WordPress, Blogger...

0 件のコメント:

コメントを投稿