iOS 14で広告識別子(IDFA)を取得する方法【App Tracking Transparency対応ガイド】
この記事のタイトルに心当たりがあるなら、iOS 14がもたらした「激震」についてすでにご存じかもしれません。
iOS 14のリリースに伴い、アプリがユーザー情報を収集する方法に大きな変更が加えられました。そのひとつが、広告識別子(IDFA:Identifier For Advertisers)へのアクセス方法に関するものです。
IDFAをよく知らない方のために、まずはIDFAとは何か、なぜ重要なのかを説明します。
IDFAとは?
iOSデバイスのユーザーは、広告会社によるトラッキングを許可するかどうかを自分で決めることができます。許可した場合、広告会社はユーザーの閲覧履歴などをもとに、そのユーザーに合わせたパーソナライズされたコンテンツを表示できるようになります。
これを実現する仕組みがIDFA(Identifier For Advertisers)です。IDFAはUUID文字列であり、広告主はこれを使ってユーザーとその行動を紐付けることができます。
UUID文字列の例:123e4567-e89b-12d3-a456-426614174000
iOS 14で何が変わったのか?
端的に言えば、アプリはユーザーに対してダイアログを表示し、「トラッキングを許可するかどうか」を尋ねることが必須になりました。

少し威圧的に見えますよね。
これはiOS 14以前の仕様とは対照的です。以前は、デバイスで広告トラッキングが有効か無効かを確認するだけで済みました。
Appleの最新OSであるiOS 14は、2020年9月16日からすでに提供されています。IDFAを利用している開発者は、iOS 14に対応させるためにアプリへ変更を加える必要があります。
9月3日、Appleはアップデートを発表し、これらの対応の期限を翌年初めに延期しました。
「開発者が必要な変更を行う時間を確保できるよう、ユーザーのトラッキング許可の取得は来年初めから必須となります」
これで一息つく時間ができました。2021年の「新常態」に備えて、準備を始めましょう。
この記事では、IDFAに関する背景情報を紹介し、iOS 14以降でIDFAの値を取得する方法を解説します。
広告主はIDFAをどのように活用しているのか?
例を挙げてみましょう(COVID-19以前の話です)。あなたがiPhoneでWebを閲覧していて、次の休暇のためのホテルを探しているとします。
表示される広告には、それぞれあなたのIDFAが付いたピクセルが送信されます。広告主はIDFAを照合することで、あなたがホテルの広告を多数閲覧していることを把握し、「このユーザーはホテルを予約したいのだな」と推測します。
そうなれば、間もなくホテル客室の広告が大量に表示されることになるでしょう。
このシンプルながら奥深いテクノロジーは、2012年のiOS 6で私たちの生活に登場しました。それ以来多くの変化があり、iOS 14は再び業界を大きく揺るがそうとしています。
✋ 注意:これらの新しいAPIを使用するには、Xcode 12にアップグレード/ダウンロードしておく必要があります。
広告トラッキングとIDFAの取得
iOS 14以前は、IDFAの取得は非常に簡単でした。
次のようにして、広告トラッキングが有効かどうかを確認していました。
[[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]
無効になっていなければ、ASIdentifierManagerクラスを通じてIDFAを取得できました。
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
簡単ですよね。
☝️ なお、iOS 10以降、ユーザーが広告トラッキングを無効にしている場合、上記のメソッドはゼロで埋められたUUID文字列を返す仕様になっています。
iOS 14の変更点のひとつは、広告トラッキングの有効/無効を確認するメソッドが非推奨になったことです。では、iOS 14以降でアプリはどのようにしてIDFAを取得すればよいのでしょうか?
答えは、ユーザーにダイアログを表示する新しいAPIを使うことです。このダイアログについて知っておくべき重要なポイントがあります。
- ダイアログはユーザーに一度しか表示できない
- ダイアログのUIで変更できるのは、「トラッキングを許可」オプションの上の2行(「トラッキングしてもよろしいですか?」に相当する部分)のみ
つまり、開発者はユーザーにこのメッセージをいつ、どのように表示するかを慎重に検討する必要があります。
認証ステータス
iOS 14では、App Tracking Transparencyという新しいフレームワークが導入されました。このフレームワークにはATTrackingManagerクラスが含まれており、次の2つのAPIを提供します。
- ユーザーにトラッキング許可を求めるダイアログを表示する
- 認証ステータスを照会する(ダイアログの表示有無に関わらず)
まずは認証ステータスの取得方法から学びましょう。そのためには、trackingAuthorizationStatusメソッドを呼び出します。
ATTrackingManagerAuthorizationStatus status = [ATTrackingManager trackingAuthorizationStatus];
このメソッドは、次のいずれかの値を持つNSUIntegerを返します。
- ATTrackingManagerAuthorizationStatusNotDetermined = 0
- ATTrackingManagerAuthorizationStatusRestricted = 1
- ATTrackingManagerAuthorizationStatusAuthorized = 3
- ATTrackingManagerAuthorizationStatusDenied = 2
最初の3つの結果は説明するまでもないでしょう。ここでは最後の「Restricted(制限)」について少し詳しく見てみます。
広告トラッキングの有効/無効を設定する画面がロックされ、そのオプションが「有効」に設定されている場合、認証ステータスは「Restricted」となります。
Appleは、たとえば子ども用として識別されたデバイスなどでこの挙動が発生することを認めています。
トラッキング許可を求める
ダイアログを表示するコードを見る前に、まずinfo.plistファイルにNSUserTrackingUsageDescriptionキーを含める必要があります。
このキーの値として追加したテキストが、前述のダイアログ内の2行として表示されます。

ダイアログを表示するには、requestTrackingAuthorizationWithCompletionHandlerを呼び出します。
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
if (status == ATTrackingManagerAuthorizationStatusDenied) {
//認証ステータスが「拒否」の場合の処理
} else if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
//認証ステータスが「許可」の場合の処理
} else if (status == ATTrackingManagerAuthorizationStatusNotDetermined) {
//認証ステータスが「未確定」の場合の処理
} else if (status == ATTrackingManagerAuthorizationStatusRestricted) {
//認証ステータスが「制限」の場合の処理
}
}];
この記事の最初の画像(ダイアログのスクリーンショット)で見たように、info.plistファイルに記述したテキストが、ダイアログ内の2行として表示されます。
まとめ
これらの変更は大変に思えますが、すぐに適用されるわけではないことを覚えておきましょう。
また、アプリでクラッシュやエラーが発生しないよう、この記事で解説したすべての手順に必ず従ってください。
-
Windows 7で「ベース システム デバイス」のドライバを入手・解決する方法
Windows 7における「ベース システム デバイス」の問題は世界中で広く報告されており、何百万人ものユーザーがこのエラーのせいでハードウェアを正常に動作させられずに困っています。従来のWindowsとは異なり、この問題はどのハードウェアなのかを示すヒントを一切表示してくれません。そのため、手動でドライバを更新しようとしても、どのドライバを探せばよいのかさえ分からないという状況に陥りがちです。幸いにも、このエラーを根本的に解決する簡単な方法がいくつか存在します。 「ベース システム デバイス」とは何か? 「ベース システム デバイス」とは、Windows 7が対応するドライバを見つけられ
-
Apple TV+を無料で視聴する方法まとめ|お得な無料トライアル徹底解説
Apple TV+は、ストリーミングサービス業界におけるダークホース的な存在です。「Ted Lasso」「ザ・モーニングショー」「Severance」など、批評家から絶賛される話題作を多数ラインナップしています。同サービスの月額料金は、先日の値上げにより4.99ドルから6.99ドル(英国では6.99ポンド)へと引き上げられました。物価高騰が続く昨今、他のプラットフォームも相次いで値上げしており、新たなサブスクリプション料金を払うのは気が重いという方も多いでしょう。しかし、ご安心ください。Apple TV+には、ユーザーが活用できる無料トライアルが数多く用意されています。1円も支払わずに視聴した