ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
AdAttributionKitについて
AdAttributionKitは、プライバシーに配慮した広告アトリビューションのための新しいiOS向けフレームワークです。再エンゲージメント、クリックスルーアトリビューション(カスタムクリエイティブのサポートを含む)、JWS形式のインプレッションとポストバックなどをサポートしているAdAttributionKitの詳細を確認しましょう。AdAttributionKitの実装時のテストに関するインサイトや、AdAttributionKitの導入で利用できるコードスニペットおよびベストプラクティスに関する詳細な知識も得られます。
関連する章
- 0:00 - Introduction
- 2:05 - Fetching ads
- 3:55 - Displaying ads
- 8:18 - Postbacks
- 16:28 - Re-engagement
- 21:09 - Testing AdAttributionKit
リソース
- AdAttributionKit
- Attributing ads with SKAdNetwork and Private Click Measurement
- Forum: App & System Services
関連ビデオ
WWDC22
-
ダウンロード
こんにちは Apple Store EngineeringのNikilです 本セッションでは AdAttributionKitについてご紹介します Appleはあらゆる事業において プライバシー保護を重視しています プライバシー保護型広告 アトリビューションにより ユーザーのプライバシーの保護と 広告の貢献度の測定を両立できます
このタイプの広告アトリビューションは クラウドの匿名性を基盤としています
大まかに言うと この匿名性が高いほど 広告ネットワークや広告主に返される データは少なくなり コンバージョンも減少します
対象とするクラウドの規模が大きいほど 多くのデータが得られます
クラウドの規模が最高レベルを超えると 広告ネットワークと広告主に 最大限の量のデータが返されます
SKAdNetworkは クラウドの匿名性に基づく Apple初の プライバシー保護型の 広告アトリビューションフレームワークです 本セッションでは SKAdNetworkを基盤とする iOSとiPadOS向けの新しい 広告アトリビューションフレームワーク AdAttributionKitについてご紹介します まず 広告アトリビューションの 概要を説明します
広告ネットワークは広告を生成し 署名して パブリッシャーアプリに提供します
パブリッシャーアプリは ユーザーにその広告を表示します
ユーザーは広告対象のアプリを インストールし その後の期間 そのアプリを利用します そして 測定期間が終了すると コンバージョン情報を収めたポストバックが 広告ネットワークに送られます
本セッションでは 以上の流れを踏まえて 次のトピックを取り上げます 最初に説明するのは 広告を取得する方法と AdAttributionKitの新しい 広告インプレッションフォーマットです 次に 広告の表示について説明します その後 ポストバックについて説明します さらに 再エンゲージメントを取り上げ 最後に AdAttributionKitの テストについて手短にご紹介します
広告の取得の説明から始めましょう 広告は アトリビューションフロー における入力にあたります パブリッシャーアプリは 広告データを 広告ネットワークから取得します この広告データは コンパクトなJWS形式です 各フィールドを見てみましょう これはJSON形式の 広告インプレッションです
重要なフィールドについて説明します
advertised-item-identifierは 広告対象のアプリのアプリIDです
publisher-item-identifierは 広告を表示するアプリのアプリIDです
source-identifierは 広告のキャンペーン関連情報を 表現するために使用する 4桁の整数です このフィールドの機能は SKAdNetwork 4.0の場合と同じです
AdAttributionKitのドキュメントに JSON形式のフィールドの説明があります リンクは後ほどお伝えします
この構造を踏まえて 広告インプレッションに移りましょう AppImpressionのインスタンスは 広告インプレッションを表します これらのインスタンスは 広告の コンパクトなJWS表現で初期化されます これについては先ほど説明しました
次に appImpressionをコンパクトな JWSから作成する方法を解説します
まず 広告のコンパクトな JWS表現を取得します fetchAdImpressionJWS()メソッドは 実装済みにはなっていません これは 広告プロバイダや 広告ネットワークとの統合の方法に 全面的に依存するためです
このjwsStringをAppImpressionの イニシャライザに渡します このAppImpressionのインスタンスは 次のセクションで広告の表示について 説明する際に使用します
AdAttributionKitは 広告表示の 3つの方法に対応しています 広告対象のアプリに表示する 各種の広告を見てみましょう
1つ目の広告は クリックできる カスタムクリエイティブです カスタムのクリック広告をタップすると 広告対象のアプリをインストールできる マーケットプレイスへ移動します
2つ目は 別の画面に表示される ビュースルー広告です この種類の広告コンテンツの例として 動画広告があります
3つ目の広告タイプは 広告対象のアプリを シンプルに宣伝するものです このタイプでは SKOverlayを使用して アプリのコンテキストから離れずに バナーとして表示できます
またSKStoreProductViewController を使えば 全画面表示のモデルも利用できますが この場合も アプリのコンテキストは維持されます SKOverlayと SKStoreProductViewControllerは いずれもiOSのデザイン言語を使用するため アプリへの導入や接続が非常に簡単です
次に カスタムのクリック広告の 実装方法について説明します
まず customAdViewを作成します
次に UIEventAttributionViewの インスタンスを作成し 広告ビューのサブビューとして追加します
なお UIEventAttributionViewは ユーザーが操作する最上部のビューに 配置する必要があります
広告ビューの設定では 広告へのタップ操作を処理します ユーザーが広告ビューをタップすると appImpressionのインスタンスが取得され handleTap()メソッドが呼び出されます
handleTapは appImpressionのインスタンスの初期化後 15分以内に呼び出す必要がある点に 注意が必要です 15分が経過した場合は 新規の appImpressionインスタンスを作成します
広告がクリックされ handleTapメソッドが呼び出されると AdAttributionKitによって マーケットプレイスへと画面が遷移し 広告対象のアプリをインストールできます
ビュースルー広告については 動画広告での使用について説明しましたが ビュースルー広告は あらゆる カスタム広告表示を扱うことができます
簡潔なタイムラインを使用して イベントと それに関連するAPI呼び出しを 視覚化します
広告表示の開始時に appImpressionのインスタンスに対して beginView() APIを呼び出し
広告表示の終了時には appImpressionのインスタンスに対して endView() APIを呼び出します
この例の動画ビュースルー広告では 動画再生の開始時に appImpressionのインスタンスに対し beginView()を呼び出し
再生の終了時に appImpressionのインスタンスに対し endView()を呼び出します ビュースルー広告に関する注意点が いくつかあります カスタム広告のコンテンツは 2秒以上表示する必要があります つまり beginView()の呼び出しから endView()の呼び出しまでの時間は 2秒以上にする必要があります この種類の広告コンテンツに関する 業界標準に準拠するためです
beginViewとendViewは appImpressionの同じインスタンスに 呼び出す必要があります
また 単一の広告ネットワークで 同じアプリを広告対象とする 複数のビュースルー広告の表示を 同時に開くことはできません beginViewのすべての呼び出しは endViewの呼び出しと 対であるのが必須です
次は SKOverlayの説明です
SKOverlayは SKAdNetworkでの AdAttributionKitの実装と 同じ方法で実装します SKOverlayの設定には AppConfigurationの インスタンスを使用します
appImpressionのインスタンスを 新しい AppConfigurationの appImpressionプロパティに設定します
最後は SKStoreProductViewControllerです SKStoreProductViewControllerの 設定は SKAdNetworkでの設定と同様です
loadProductメソッドを呼び出して プロダクトページに表示するUIを 準備します
主な違いは loadProductメソッドの impressionパラメータです このパラメータに appImpressionのインスタンスを渡します
次はポストバックです
アトリビューションシステムの 出力にあたるのがポストバックです 広告ネットワークに送信される コンバージョンのシグナルであり 必要に応じて 広告対象のアプリの デベロッパにも送信されます
AdAttributionKitが送信する ポストバックは 署名済みのコンパクトなJWSと 未署名のフィールドの組み合わせです これが署名済みの部分です
いくつの重要なフィールドを見てみましょう
conversion-typeフィールドには この ポストバックを作成したコンバージョンの タイプに関する情報があります このフィールドの値は download redownload re-engagementです
marketplace-identifierフィールドは コンバージョンの発生元となった マーケットプレイスのIDが入ります この例では Apple App Storeからの ダウンロードであることから このフィールドの値は com.apple.AppStoreになっています
publisher-item-identifierは 元の広告を表示していたアプリのIDです クラウドの匿名性が低い場合 これはポストバックに含まれません
source-identifierは 2〜4桁の数字です クラウドの匿名性に応じて ポストバックの値の桁数が決まります
ポストバックリクエストの本文の 残りの部分を見てみましょう
jws-stringキーには 先ほど説明したJSONの コンパクトなJWS表現が保持されます ここでは 説明を簡潔にするために 実際の文字列ではなく プレースホルダを表示しています
ad-interaction-typeキーには ユーザーが広告に対し どのような操作を行ったかを示す情報が 保持されます 入力される値はclickとviewです このキーについては 後のセクションで詳しく説明します
conversion-valueキーには AdAttributionKitに対して APIを呼び出した 広告対象のアプリで決定された コンバージョン値が保持されます
conversion-valueも クラウドの匿名性に基づいているため 必ずしも ポストバックに含まれるとは限りません
クラウドの匿名性の程度に基づき データの許容度が高くないと判断されると conversion-valueではなく coarse-conversion-valueが 送信されることがあるほか
そもそも コンバージョン値が 送信されないこともあります
ポストバックリクエストの本文全体に戻って 2つのトピックを詳しく見ていきます conversion-valueと ad-interaction-typeです
まず コンバージョン値は 広告の効果の測定に使用できます 言い換えると 広告キャンペーンが 広告主のニーズに対し どの程度の価値をもたらしたかを示します コンバージョン値は 広告の費用対効果(ROAS)に関する情報を もたらすという点でも有用です 今後の広告費用と関連する最適化について 判断する上で役立つ 極めて重要なヒューリスティック値です なお コンバージョン値は fineかcoarseのいずれかですが これはクラウドの匿名性によって決まります 次に 3つのシナリオについて ユーザーのエンゲージメントを測定し AdAttributionKitから conversion-valueを更新してみましょう
1つ目はアカウント作成のシナリオです
アプリでのアカウント作成を処理する メソッドを使用しているとします
まず PostbackUpdateの 構造体を作成し 次に Postbackの型に対して updateConversionValue メソッドを呼び出し 更新を実行します
PostbackUpdateの構造体の プロパティを詳しく見てみましょう
1つ目の引数は fineConversionValueです 値は0〜63の正の整数です fineConversionValueの値は 広告キャンペーンの内容と その効果の測定方法について セマンティックな観点で 意味を成すものである必要があります 一般的に コンバージョン値のスキーマは 広告対象のアプリのデベロッパ 選択した広告ネットワーク 提携先として選択したMMPの間での 検討と計画を経て決定されます
2つ目の引数は ポストバックをロックするための値です このロックは 特定のコンバージョン期間において コンバージョン値の 測定と記録が終了したことを AdAttributionKitに 通知するために使用します ロックを行うと AdAttributionKitで ポストバックが変更不可になり ただちにその送信スケジュールを 設定できます
ロックを使用する状況としては 一刻も早く情報を得る必要があるような 極めて価値が高いイベントの発生が 挙げられます こうした状況では情報の速さが命であり そのコンバージョン期間の その他すべての情報の測定より優先されます この場合ロックを呼び出し ポストバックを変更不可にして スケジュールを設定するよう AdAttributionKitに伝えます
アカウントの作成からは ポストバックのロックが必要になるような 大きな価値は得られないので ロックの引数はfalseにします
最後の引数はcoarseコンバージョン値です low medium highの 3つの値のいずれかを指定できます 先ほど説明したように クラウドの匿名性に基づいて fine値を送信できないと 判断される場合は ポストバックで coarse値が送信されます
ユーザーは 作成したアカウントで 最初の動画を視聴します これは価値の高いイベントと考えられるので fineConversionValueの値を 38に更新します
ユーザーによる動画の視聴には ポストバックのロックを検討すべき 価値がないので 引数はfalseです
クラウドの匿名性に基づいて fine値を送信できないと判断される場合は フォールバック測定として coarseConversionValueを mediumにします
最後に ユーザーが動画をアップロードした場合 極めて価値の高い エンゲージメントと考えられるので fine値を42に更新します
動画制作は 極めて価値の高いイベントなので ただちにポストバックを 受け取ることが望まれます そのため APIのlockPostbackの引数により ポストバックをロックします
ポストバックをロックしても それが ただちに送信されるわけではありません 送信を遅延させることで ユーザーの プライバシー保護を強化しています
ここでもフォールバックとして coarseConversionValueを highに設定します
PostbackUpdateの構造体を使用すると アプリでの様々なシナリオにおいて コンバージョン値を設定できます
ポストバックについて最後に説明するのは 広告インタラクションのタイプです
AdAttributionKitは ユーザーによる広告のタップ操作と 広告の単なる閲覧を区別します コンバージョンにつながった広告を 特定する上では この区別が極めて重要です
ポストバックでは 広告に対するユーザーの操作に応じて 広告インタラクションのタイプの値は clickまたはviewになります 様々な広告の表示方法に対応する このフィールドの値を見てみましょう
カスタムのクリック広告では 閲覧だけでは インプレッションは発生しません
広告をタップすると インタラクションの タイプはclickになります
ビュースルー広告では 閲覧があれば インタラクションタイプはviewになります 広告をタップしても インプレッションは発生しません
SKOverlayでは 広告が表示されると インタラクションタイプはviewになります 広告をタップするとclickになります
SKStoreProductViewController でも同様に 広告インタラクションのタイプは 広告を表示するとview タップするとclickです
コンバージョン値と インタラクションのタイプから アプリにおけるユーザーエンゲージメントと インストールにつながった広告に関する 詳細情報が得られます 次に より新しい概念である 再エンゲージメントをご紹介します 広告アトリビューションの主な目的は コンバージョンイベントを インプレッションイベントに 関連づけることです ここまでの説明では インストールを コンバージョンイベントとしてきました 多くの広告キャンペーンの最初の目標は アプリをインストールしてもらうことです アプリ利用のユーザージャーニーは インストールから始まるため この目標設定は妥当と言えます
では コンバージョンイベントの 新しいタイプである 再エンゲージメントの 説明に移りましょう 再エンゲージメントの広告キャンペーンでは 広告対象のアプリへの 一度離れた ユーザーの関心を再喚起することが目標です
例えば 広告対象のアプリを インストールしたユーザーが 利用を中止したとします 広告対象のアプリでは このユーザーの再獲得が望まれます
そこで 期間限定オファーの 広告を実施します ユーザーがこの広告をタップすると AdAttributionKitにより 広告対象のアプリが起動され オファー画面が開き 再エンゲージメントが始まります
これは 再エンゲージメントの 広告インプレッションです 再エンゲージメントのために ペイロードに eligible-for-re-engagement パラメータを新たに追加します
これにより 広告インプレッションを 再エンゲージメントのコンバージョンに 算入するよう AdAttributionKitに指示できます
eligible-for-re-engagement プロパティを設定した 広告インプレッションは 広告対象のアプリが インストール済みかどうかに基づき 再エンゲージメントか インストールのいずれかとして算入されます
再エンゲージメントのオプトインがない 通常の広告インプレッションは インストールとしてのみ算入されます
これは 再エンゲージメントを 開始するためのコードです
jwsStringを使用して AppImpressionのインスタンスを作成します これは 再エンゲージメントを オプトインしたJWSインプレッションです
次に 広告ビューのタップハンドラで まず 広告対象のアプリ内で ユーザーの移動先となる ユニバーサルリンクを取得します
次に appImpressionインスタンスに対して handleTap()メソッドを呼び出し reengagementURLを渡します この呼び出しにより AdAttributionKitが 広告対象のアプリを開きます
広告対象のアプリが開かれると 再エンゲージメントのURLが渡されます 再エンゲージメントのURLには クエリパラメータが追加されています 再エンゲージメントでは AdAttributionKitが このパラメータをURLに追加します
広告対象のアプリは このパラメータに基づいて アプリが開かれたのが AdAttributionKitの 再エンゲージメントに起因するか判断します
再エンゲージメントの実施は SKOverlayと SKStoreProductViewController でも可能です
どちらの場合も 設定はインストールに類似しています
広告対象のアプリで ユニバーサルリンクを開くには SKOverlayでは adAttributionReengagementURL プロパティを
SKStoreProductViewControllerでは loadProductメソッドで reengagementURLパラメータを使用します 次は再エンゲージメントのコンバージョンで 送信されるポストバックの説明です
ポストバックのコンバージョンタイプキーの 値は re-engagementになります
再エンゲージメントのコンバージョンの インタラクションのタイプは clickのみです AdAttributionKitでは ビュースルーの 再エンゲージメントはサポート対象外です
コンバージョン値を更新する 最初の呼び出しは コンバージョンから48時間以内に 実行する必要があります
再エンゲージメントのポストバックは インストールのポストバックとは別に 選択的に更新できます その方法をお見せします
先ほどのPostbackUpdateの構造体を 再度見てみましょう
どのポストバックを更新するかは conversionTypesパラメータで制御します
再エンゲージメントの ポストバックのみを更新する場合は conversionTypesの値を .reengagementにします
インストールの ポストバックのみを更新する場合は conversionTypesの値を .installにします
すべてのポストバックを更新する場合は conversionTypeの値を.installと .reengagementの両方にします conversionTypesのパラメータが nilの場合も AdAttributionKitは すべてのポストバックを更新します
以上が再エンゲージメントの説明です これとインストールを合わせれば ユーザーによるアプリ利用のあり方の 全体像を把握できます AdAttributionKitのテストは 困難になる場合があります 原因は このキットがその要件と目的に 応えるために採用している非同期設計です
この非同期性は プライバシー保護の強化を目的とした 時間のランダム化によって さらに強くなっています テストを容易にするために AdAttributionKitに 新たなデベロッパモードを追加しました
デベロッパモードでは 時間のランダム化が適用されず 時間決定論的なシステムになります コンバージョン期間が短くなるので コンバージョン値の更新のテストを 3つの期間すべてにおいて テストしやすいスケジュールで実施できます
デベロッパモードでは ポストバックの送信も 高速になるので テストに効果的です デベロッパモードを有効にする方法を 見てみましょう
iOSの設定でメニューに移動し のスイッチまで下にスクロールします
スイッチをオンにすると AdAttributionKitが デベロッパモードで機能するようになります システムでの所要時間が短くなり 迅速なテストが可能になります
以上が AdAttributionKitに関する 本セッションの内容です プライバシーを保護する 新しい iOS/iPadOS向け広告アトリビューションの フレームワークについて説明しました
広告ネットワークを SKAdNetworkで使用するために すでに登録済みの方は それ以外の登録は不要です 未登録であれば まず AdAttributionKitに 広告ネットワークをご登録ください
登録できたら 新しいJWS形式の広告を出稿し AdAttributionKitで表示しましょう
広告対象のアプリに 新しいAdAttributionKit APIを導入し コンバージョン値の更新に利用しましょう
サーバ側では 受信する新しいJWS形式のポストバックを 解析し 有益な情報を取得しましょう
本セッションでご紹介した AdAttributionKitのすべての機能は SKAdNetworkにフルに対応しています SKAdNetworkの詳細については WWDC22のセッション「What’s new with SKAdNetwork」をご覧ください
最後に AdAttributionKitの導入を 始める際に役立つ 最適なリソースである AdAttributionKitのドキュメントも ぜひご覧ください ご視聴ありがとうございました
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。