ハイライト
SKAdNetwork 4.0 は、キャンペーン ID を階層型ソース識別子に拡張し、2 レベルのコンバージョン値、3 ラウンドのポストバック、Web 広告アトリビューションおよび StoreKitTest テスト機能を導入し、広告主が群衆の匿名性制約の下でより多くのインストール アトリビューション シグナルを取得できるようにします。
主要内容
広告のアトリビューションには長期的な矛盾があります。広告主は広告がインストールとその後のアクションにつながっているかどうかを知る必要があるのに対し、ユーザーは自分のアクションがアプリやウェブサイト全体で追跡されることを望んでいません。ここがSKAdNetworkの場所です。これにより、広告ネットワーク、パブリッシャー アプリ、広告主アプリは、ユーザーのプライバシー保護をプロトコルに組み込みながら、署名済みインプレッション、初回起動シグナル、コンバージョン値の更新、ポストバックを通じてインストール アトリビューションを完了できます (00:36)。
SKAdNetwork 4.0 の主な変更点は、プライバシーの境界を壊すことなく、より多くのシグナルを広告主に提供することです。 Apple はこの境界を説明するために群衆の匿名性を使用しています。インストール量が少ない場合、ポストバックが返すフィールドは少なくなります。インストール量が増加すると、ユーザーはより大きなグループに混ざり、システムはより詳細な情報を返します (03:38)。
この一連のルールは、すべての新しいフィールドに影響します。ソース識別子の桁数、コンバージョン値の粒度、およびポストバックの数はすべて、クラウドの匿名性の対象となります。開発者がしなければならないことも変わりました。フィールドをランダムにエンコードすることはできず、サーバーは古い形式を解析するだけで済みません。テストでは、署名やポストバックに問題があることを発見する前にオンライン広告の実行を待つことはできません。
単一のキャンペーン ID から階層的なソース ID へ
従来の SKAdNetwork のキャンペーン ID は 2 桁のフィールドでした。 SKAdNetwork 4.0 では、これを 4 桁に拡張し、Source Identifier という名前に変更しました。 Apple は、これを通常の整数ではなく、2 桁、3 桁、4 桁の 3 レベル構造として扱うことを推奨しています (04:41)。
この設計は、アトリビューションのドリルダウンに適しています。最初の 2 桁は広告キャンペーンを表し、3 桁目はバケット化されたユーザーの位置を表し、4 桁目は画面上の広告の位置を表すことができます。治療内容、期間、広告サイズなども設計できます。重要な点は、低い匿名性レベルでは 2 ビットのみが返され、高い匿名性レベルでは 4 ビット全体が返されるということです。
1 つのポストバックから 3 つのポストバックへ
古いモデルにはポストバックが 1 つしかありませんでした。フード トラックの例では、ユーザーがアプリを起動してドーナツの最初のバッチを手に取った後、ポストバック時間が経過します。ユーザーは後で配信を完了しますが、その後の動作に起因するものはありません (10:18)。
SKAdNetwork 4.0 は、3 つのポストバックに対応する 3 つの固定時間ウィンドウに変更されています。最初のラウンドでは依然として優れたコンバージョン値が得られます。最後の 2 つのラウンドでは、粗い変換値が送信される可能性があります。このようにして、開発者は、その後の再エンゲージメントとは別に、インストール後の短期間の動作を記録できます (11:21)。
ウェブ広告も SKAdNetwork プロセスに参加します
これまでの典型的なプロセスはパブリッシャー アプリで発生していました。広告をクリックすると App Store の製品ページが開き、インストール後に SKAdNetwork がポストバックを送信します。 SKAdNetwork 4.0 は、同じプライバシー保護属性を Web 広告にも拡張します。ユーザーが Safari で広告リンクをクリックすると、App Store は広告ネットワーク サーバーから署名付きインプレッションを取得し、その後のインストール帰属プロセスを実行します (12:53)。
Web リンクには 2 つのキー フィールドがあります。attributionDestinationApple にサインインプレッションを入手するにはどこに行くかを伝えてください。attributionSourceNonce広告ネットワークがどの署名付きインプレッションを返すかをターゲットにするのに役立ちます (13:47)。
詳細
1. ソース識別子は匿名性のレベルに応じて設計する必要があります
(04:41) SKAdNetwork 4.0 は、2 桁のキャンペーン ID を 4 桁のソース ID に拡張します。返される結果は群衆の匿名性によって異なります。低レベルでは 2 桁が返され、中レベルでは 3 桁が返され、高レベルでは 4 桁全体が返されます (07:04)。
ソース識別子は、ネストされた情報として設計できます。トランスクリプトで5739たとえば、群衆の匿名性が高まるにつれて、リターンの粒度も増加します。
| 群衆の匿名性 | ポストバックで返される可能性のあるコンテンツ | 設計への影響 |
|---|---|---|
| 低い | 2桁成分 | 詳細は最小限、最も重要でリスクが最も低いビジネス カテゴリのみ |
| 中 | 3桁の成分 | 2 桁の数値に基づいてバケット情報のレイヤーを追加します。 |
| 高 | 完全な 4 桁のソース識別子 | 完全な 4 桁のソース ID を返します。これには、最も詳細なテスト、場所、または広告インプレッション情報が含まれます。 |
キーポイント:
- ソース識別子は、SKAdNetwork 4.0 の新しい 4 桁のフィールドで、以前の 2 桁のキャンペーン ID に代わるものです。
-
5739これは、ネストされたビジネス ディメンションのエンコード結果として理解されるべきであり、4 桁全体を単一の「広告スロット」または「場所」フィールドとして誤ってラベル付けしないでください。 - トランスクリプトの説明
SKAdImpression新しいものもありますsourceIdentifier属性;辞書を使用してインプレッションを設定する場合は、「ソース識別子」フィールドにも入力する必要があります。特定のキーは Apple のドキュメントと現在の SDK の影響を受けます。 - サーバーとクライアントは同じエンコード テーブルを共有する必要があります。共有しない場合、ポストバックの数値はビジネス上の意味を復元できません。
- コード表は、2 桁、3 桁、4 桁の 3 つの戻り状況をカバーする必要があります。最も重要な情報は 4 桁目だけに入れないでください。匿名性が低く返されないためです。
2. 変換値はファインとコースに分かれています
(06:08) 古い変換値は 6 ビットです。 SKAdNetwork 4.0 では 2 種類の値が導入されています。詳細なコンバージョン値は、引き続き元の詳細な値です。粗粒度のコンバージョン値には、低、中、高の 3 つのレベルしかありません。
Apple が示した例は次のとおりですhigh 42:highは大まかな値ですが、42いい値ですよ。粗い値を使用すると、必要なインストールが少なくなるため、アプリはより早く大まかな結果を取得できます。同じポストバックは、コンバージョン値の 1 つだけを返します (06:34)。
// 概念示例:用 fine + coarse 两层值描述一次用户行为
let fineValue = 42
let coarseValue = "high"
SKAdNetwork.updatePostbackConversionValue(
fineValue,
coarseValue: coarseValue
) { error in
// transcript 建议在 completion handler 中执行后续任务
}
キーポイント:
updatePostbackConversionValueはトランスクリプトに記載されている新しいメソッド名です。 -fineValue旧バージョンの6bit換算値に相当します。 -coarseValue低、中、高の3段階の値に対応します。- 更新が完了した後、後続のタスクには完了ハンドラーを使用する必要があります。これは、セッションで明示的に指定された提案です (08:33)。
- 実際のプロジェクトでは、現在の SDK の公式の型と署名を使用する必要があり、この概念の断片を運用コードに直接コピーすることはできません。
粗い値を設計するときは、それを細かい値の単純な切り捨てとして考えないでください。第 3 段階の値は情報量が少なく、「未起動/完了したコアアクション/価値の高いユーザー」といった大まかな分類を表現するのに適しています。
3. 異なる時間枠を提供するための 3 ラウンドのポストバック
(09:57) 1 つのポストバックでカバーできる時間枠は 1 つだけです。 SKAdNetwork 4.0 の 3 つのポストバックにより、開発者はインストール後のさまざまな段階 (起動、最初のコア動作、その後の再エンゲージメント) を記録できます。
// 概念示例:把不同阶段映射到不同 postback 窗口
func userDidLaunchApp() {
updateConversion(window: 1, coarse: "low", fine: 5)
}
func userDidCompleteFirstDelivery() {
updateConversion(window: 2, coarse: "medium", fine: nil)
}
func userDidCreateNewRecipe() {
updateConversion(window: 3, coarse: "high", fine: nil)
}
キーポイント:
window: 11回目のポストバックに対応し、良好なコンバージョン値が得られます。 -window: 2そしてwindow: 3追加のポストバックに対応して、セッションは大まかなコンバージョン値を伝送できることを示します。 -fine: nil後の 2 つのラウンドが詳細な値に依存しないことを示します。- このフラグメントはビジネス マッピング手法を表現します。
updateConversionApple APIではありません。
また、サーバーはデータを保存するために 3 ラウンドのポストバックを実行する必要があります。 「最後に帰属された結果」だけを保持しないでください。最初のラウンドは、インストール後の初期の品質を測定するのに適しており、2 番目と 3 番目のラウンドは、その後に発生する価値の動作を測定するのに適しています。
4. Web 広告のアトリビューションは、署名インプレッションを返せる必要がある
(13:47) Web広告リンクhrefApp Store の製品ページをポイントします。attributionDestination署名されたインプレッションを取得するためにどのドメイン名に移動するかを Apple に伝えます。attributionSourceNonce広告ネットワークが対応するインプレッションを見つけられるように支援します。
<!-- 概念示例:Web 广告链接包含 App Store 目标和归因字段 -->
<a
href="https://apps.apple.com/app/id123456789"
attributionDestination="https://ad-network.example"
attributionSourceNonce="nonce-from-ad-network">
Download the app
</a>
キーポイント:
hrefはプロモーション中の App Store リンクです。 -attributionDestinationここで Apple の特徴的な印象が得られます。 -attributionSourceNonce広告ネットワークが生の広告インプレッションをターゲットにできるようにするために使用されます。- session は、このタイプのリンクがファーストパーティ サイトまたは埋め込みクロスサイト iframe (14:11) に使用できることを示します。
アップルはこれから始めるだろうattributionDestinationeTLD+1 を抽出し、固定プロトコル、既知の修飾子、および固定パス コンポーネントを追加して、HTTP POST URL を構築します。 POST 本文は JSON であり、元のリンクが含まれていますsource_nonce(14:22)。
{
"source_nonce": "nonce-from-ad-network"
}
キーポイント:
source_nonce広告リンクのノンスに対応します。- 署名インプレッションを検索して返すために広告ネットワークによって使用されます。
- 返される署名付きインプレッションには、Web アトリビューション プロセスのソース アプリ ID に対応するフィールドであるソース ドメインが含まれます。
- ポストバック サーバーは、新しいオプションのソース ドメイン フィールド (15:43) を解析できる必要があります。
5. StoreKitTest はインプレッションとポストバックを検証できます
(16:28) Apple は、Xcode 13.3 で SKAdNetwork のテスト可能性の変更を提供し、StoreKitTest の単体テスト フレームワークに配置します。これにより、インプレッションの署名と構成、ポストバックの受信と検証という 2 つの一般的な問題点が解決されます。
インプレッションを検証するプロセスは次のとおりです: 作成と設定SKAdImpression、署名の生成に使用された秘密キーに対応する公開キーを指定して、呼び出します。SKAdTestSessionのvalidate方法。構成エラーまたは無効な署名により、エラーがスローされます (17:19)。
// 概念示例:验证 SKAdImpression 的配置和签名
let impression = SKAdImpression()
let publicKey = loadPublicKeyForTesting()
try skAdTestSession.validate(impression, publicKey: publicKey)
キーポイント:
SKAdImpressionテスト中の広告インプレッションです。 -publicKey署名用秘密キーに対応して、セッションではそれが明示的に必要となります。 -validateからSKAdTestSession。- 署名またはインプレッションの構成が間違っている場合、このテストは途中で失敗する可能性があります。
ポストバックのテストは 2 段階のプロセスです。最初に作成するSKAdTestPostback、送信する値とポストバック URL を設定し、渡しますsetPostbacksに追加SKAdTestSession。その後呼ばれたflushPostbacks、テスト ポストバックは、指定されたローカル サーバーまたはリモート サーバー (17:49) に送信されます。
// 概念示例:把测试 postback 送到指定服务器
let postback = SKAdTestPostback()
postback.url = URL(string: "https://example.test/skadnetwork/postback")!
skAdTestSession.setPostbacks([postback])
skAdTestSession.flushPostbacks()
キーポイント:
SKAdTestPostbackポストバックをシミュレートすることを示します。 -postback.urlこれは受信サーバーのアドレスであり、リモート サーバーまたはローカル サーバーのいずれかになります。 -setPostbacksテスト ポストバックをセッションに追加します。 -flushPostbacksトリガー送信、セッションは、ネットワーク経由で指定されたサーバーに送信されることを示します。
重要ポイント
1.ソース識別子コード リスト チェッカーを作成します
- 対処方法: 4 桁のソース識別子を 2 桁、3 桁、4 桁の 3 桁の意味に分割し、主要なビジネス情報が低い匿名性レベルでも返せるかどうかを確認します。
- 価値がある理由: SKAdNetwork 4.0 は群衆の匿名性により異なる桁数を返します。エンコードが正しくないと、少量の広告で分析可能なシグナルが完全に失われる可能性があります。
- 開始方法: キャンペーン、場所バケット、広告スペースの 3 つの側面からテーブルを作成し、各側面の逆ソリューション ロジックを作成します。
2.大まかなコンバージョン値マッピングの背景のセットを作成
- やるべきこと: 低、中、高の独立した意味を定義し、それらをインストール後の主要な動作段階にマッピングします。
- 実行する価値がある理由: 粗い値は細かい値よりも早く返されるため、新しい広告キャンペーンやインストール量が少ないシナリオに適しています。
- 開始方法: イベントを「開始」、「コアアクションの完了」、「価値の高い動作」の 3 つのカテゴリに分けて、コンバージョン更新戦略に書き込みます。
3.ポストバック アトリビューション ボードを 3 ラウンド作成します
- 何をすべきか: インストールの品質、フォローアップの行動、再エンゲージメントをそれぞれ 1 ラウンド目、2 ラウンド目、3 ラウンド目までに表示します。
- 実行する価値がある理由: SKAdNetwork 4.0 では、ポストバックが 1 回だけではなくなり、後の 2 ラウンドで、古いモデルで失われた長期的な動作を補うことができます。
- 開始方法: ポストバック シーケンスまたはウィンドウ フィールドをサーバー テーブル構造に追加すると、クエリ レイヤーがウィンドウごとにコンバージョン イベントを集計します。
4. Web広告署名インプレッションサービス
- 何をすべきか: に基づいています
source_nonce対応する署名済みインプレッションを返し、ソース ドメインを記録します。 - 価値がある理由: Web 広告が SKAdNetwork に参入した後、広告ネットワークは Apple が構築した URL 上の HTTP POST に応答できる必要があります。
- 開始方法: まず、ノンスからインプレッションまでの検索インターフェイスを実装し、次にポストバック解析ロジックをオプションのソース ドメインと互換性のあるものにします。
5.ローカルのポストバック検証環境を作成します
- やるべきこと: を使用します
SKAdTestSessionそしてSKAdTestPostbackテスト ポストバックをローカル サーバーに送信して、受信、解析、保存を確認します。 - 実行する価値がある理由: 署名の構成とポストバックの受信はセッションで明示的に言及された問題点であり、単体テストによって問題が事前に明らかにされる可能性があります。
- 開始方法: ローカル サービスを指すようにテストのポストバック URL を構成し、呼び出します
setPostbacksそしてflushPostbacks、サーバーが予期されたフィールドを受信したことをアサートします。
関連セッション
- App Analytics のベンチマークを確認する — App Store の App Analytics がプライバシー保護を使用して類似アプリのパフォーマンスを比較する方法を引き続き確認します。
- App Store Connect の新機能 — アトリビューション、分析、リストのプロセスを同じ運用ツール セットに組み込むための App Store Connect と API の更新について説明します。
- StoreKit テストの新機能 — StoreKit テストのその他のテスト機能を学習し、このセッションの SKAdNetwork テスト機能と組み合わせて使用します。
- アプリ追跡の透明性を探る — 広告、帰属、ユーザーのプライバシー認証の間のポリシーと実装の境界を閉じます。
コメント
GitHub Issues · utterances