Android 版プライバシー サンドボックスには、デベロッパー プレビューとベータ版プログラムがあります。今後、デベロッパー プレビューに新しい API と機能を順次導入し、安定版の API をベータ版プログラムに昇格させる予定です。フィードバックをお寄せください。
Android 版プライバシー サンドボックスを初めて使用する場合は、まずプログラムの概要をご確認ください。プロジェクトにプライバシー サンドボックスを組み込むには、開発環境をセットアップし、テストデバイスまたはエミュレータで Android 版プライバシー サンドボックスを入手します。
現在のリリース
Android 版プライバシー サンドボックス デベロッパー プレビュー 7
リリース日: 2023 年 1 月 26 日
FLEDGE on Android API
- 次の JavaScript メソッドで、パラメータ
custom_audience_signals
の名前が変更されました。generateBid()
の名前がcustom_audience_bidding_signals
に変更されました。scoreAd()
の名前がcustom_audience_scoring_signals
に変更されました。reportWin()
の名前がcustom_audience_reporting_signals
に変更されました。
- このリリースでは、
AdSelectionFromOutcomeConfig
を取得してselectAds
の結果を比較する新しいselectAds
オーバーライドが追加されました。これにより、この API を使用する広告テクノロジー SDK がウォーターフォール メディエーションを実行できるようになります。詳しくは、デベロッパー ガイドをご覧ください。 selectAds()
API で、広告選択プロセスで取得される入札とスコアリングのロジック JavaScript のキャッシュ保存がサポートされるようになりました。- キャッシュは、JavaScript での取得呼び出し時にサーバーから返される
Cache-Control
ヘッダーで制御できます。JavaScript レスポンスがキャッシュに保存されないようにするには、no-cache
またはno-store
を使用して、キャッシュ期間を制御する max-age を使用します。 - 現在のキャッシュ エントリ
max-age
はデフォルトで 2 日間に設定されます。
- キャッシュは、JavaScript での取得呼び出し時にサーバーから返される
Android API のアトリビューション レポート
- このリリースでは、
registerSource()
とregisterTrigger()
のデイジー チェーン リダイレクトのサポートが追加されました。API コンシューマは、サーバー レスポンスとして HTTP リダイレクトを使用できるようになりました。
過去のリリース
ベータ版 1
リリース日: 2023 年 1 月 9 日
Android 版プライバシー サンドボックス ベータ版 1 により、プライバシー サンドボックス API を初めて一般デバイスで利用できるようになります。以下の点が改善されています。
全般
- Android 版プライバシー サンドボックス ベータ版 1 はデベロッパー プレビュー 5 と機能的に同等ですが、次の機能と制限事項が追加されています。
- 広告関連の API(Topics、FLEDGE、Attribution Reporting など)を利用するには、デベロッパーは登録プロセスを完了する必要があります。登録プロセスでは、デベロッパー ID を検証し、API に必要なデベロッパー固有のデータを収集します。
- Android 版プライバシー サンドボックス ベータ版 1 リリースでは、許可リストに登録して詳細を提出したデベロッパーは、自身の用意する実機でテストできます。このリリースに含まれる安定版の API を対象とした開発を行うには、新しい SDK Ad Services Extensions 4 をダウンロードしてください。
Topics API
- Android Topics Classifier Colab では、分類器モデルの仕組みをより深く理解できます。
Attribution Reporting API
- Attribution Reporting は無効になっており、このリリースでは使用できません。この API へのアクセスは、次回のベータ版リリースで再び有効になります。引き続きデベロッパー プレビューを使ってテストすることをおすすめします。
SDK ランタイム
以下の制限事項は、Android プラットフォームの次回のメジャー リリースで修正される予定です。
- 現在、
RecyclerView
などのスクロール可能なビュー内での広告レンダリングは正しく機能しません。要素のサイズが変更されたとき、ジャンクが発生することがあります。ユーザーのタッチ スクロール イベントがランタイムに正しく渡されません。 WebView
レンダリングは SDK ランタイム プロセスで利用できません。- SDK ごとのストレージは利用できません。
getAdId
API とgetAppSetId
API のサポートはまだ有効になっていません。
デベロッパー プレビュー 6
リリース日: 2022 年 10 月 31 日
Android 版プライバシー サンドボックス デベロッパー プレビュー 6 では、以下の点が改善されました。
全般
- 製品版の公開に備えて、デベロッパー プレビュー 6 では、プライバシー保護 API アクセスをデフォルトで無効にするフラグが導入されました。テスト目的で、デベロッパー プレビューで次のコマンドを実行して、プライバシー保護 API アクセスを有効にします。
adb shell device_config put adservices global_kill_switch false
AdIdManager
API とAppSetIdManager
API には、Google Play 開発者サービス バージョン 22.36.16 以降が必要です。- Android デバイスで、[設定] > [アプリ] > [Google Play 開発者サービス] に適切なバージョンが表示されていることを確認します。
- Google Play 開発者サービスを適切なバージョンに更新する必要がある場合は、Android テストデバイスまたはエミュレータに Google アカウントでログインします。次に、Google Play ストア > プロフィール アイコン > [設定] > [概要] に移動します。「Play ストアのバージョン」という見出しの下にある [Play ストアを更新] をタップします。
- このステップは開発とテストの場合にのみ適用されます。プライバシー サンドボックスが一般ユーザー向けにロールアウトされた後は必要ありません。
Topics API
getTopics
をオブザーバーとして登録するかどうかを切り替えるための Preview API を追加しました。GetTopicsRequest
クラスの初期化コードの軽微な変更。- Topics 統合ガイドをリリースしました。
FLEDGE on Android API
- 実際のサーバーに対してテストを行う場合、API の有効化が必須になりました。こちらの手順に沿ってデバイスを構成してください。サンプルアプリにあるリモート オーバーライドを使用している場合、この手順は必要ありません。
- 互換性を破る変更:
- パラメータの
Url
をUri
に置き換えました。これは、入札とスコアリングのロジックに関して、すべての FLEDGE API とカスタム JavaScript に適用されます。 - Custom Audience API の入力から
owner
フィールドを削除しました。
- パラメータの
- 不完全なカスタム オーディエンスは直ちにバックグラウンド更新の対象となるようになりました。
- JavaScript のメモリ上限を 10 MB に設定しました。これは、入札とスコアリングのロジックに適用されます。
Attribution Reporting API
- デベロッパー プレビュー 6 で Attribution Reporting API を使用するには、広告テクノロジーの事前登録が必要です。詳しくは、プライバシー サンドボックス アカウントの登録をご覧ください。
- このリリースでデバッグキーが導入されるため、デベロッパーは、プライバシーが強化されたレポートとともに、未変更のレポートを Attribution Reporting API から受け取れます。デバッグキーを使用すると、プライバシー サンドボックスに移行する間、レポートの構造を明確に把握できます。
デベロッパー プレビュー 5
全般
- デベロッパー プレビュー 5 でプライバシー サンドボックス API にアクセスするには、まず API を有効にして API 固有の権限を構成する必要があります。
- Android 版プライバシー サンドボックスは、デバイス上でプライバシー保護 API と SDK ランタイムをアクティブにするかどうかをユーザーが制御できるように設計されています。これらの設定は、デベロッパー プレビュー 5 ではデフォルトで無効に設定されています。API へのアクセスは、adb コマンドを使用して有効にできます。
- 呼び出し元アプリは、埋め込み SDK のアクセスを制御するマニフェストおよび関連する
AdServices
構成で API 固有の権限を指定する必要があります。
- フォアグラウンドで実行されている場合、アプリはプライバシー保護 API を呼び出す必要があります。
AdIdManager
とAppSetIdManager
は現在運用されていません。今後のリリースで有効になる予定です。
SDK ランタイム
sendData()
は今後のバージョンで非推奨になります。loadSdk()
が、ランタイム対応の SDK と AIDL で定義されたアプリの間の双方向通信を容易にする IBinder オブジェクトを返すようになりました。- アプリは、SDK プロセスが終了したときなどに、ランタイム対応の追加の SDK ライフサイクル イベントにアクセスできます。
Attribution Reporting API
このリリースで、Attribution Reporting API に次の機能が追加されました。
- 暗号化された集計レポートのサポート。
- アプリとウェブにわたる測定のサポート。
- ソースとトリガーの登録レスポンスの統合されたヘッダー。
- ソース:
Attribution-Reporting-Register-Aggregatable-Source
がAttribution-Reporting-Register-Source
の一部になりました。 - トリガー:
Attribution-Reporting-Register-Event-Trigger, Attribution-Reporting-Register-Aggregatable-Trigger-Data
とAttribution-Reporting-Register-Aggregatable-Values
がAttribution-Reporting-Register-Event-Trigger
という名前の単一のヘッダーに統合されました。 Attribution-Reporting-Redirects
は別のヘッダーのままです。
- ソース:
FLEDGE on Android API
このリリースには、いくつかの新機能と改善のほか、互換性を破る変更が含まれています。
- 互換性を破る変更:
runAdSelection()
の名前がselectAds()
に変更されました。AdSelectionConfig.Builder.setAdSelectionSignals()
のパラメータが、JSON オブジェクトを表すAdSelectionSignals
に置き換えられました。- 広告テクノロジーの購入者 / 販売者を表す
String
の使用がAdTechIdentifier
オブジェクトに置き換えられました。 - リモートの JavaScript 取得をオーバーライドするための
TestCustomAudienceManager
クラスとTestAdSelectionManager
クラスが追加されました。 - カスタム オーディエンスのオーナーは、呼び出し元アプリのパッケージ名である必要があります。
- FLEDGE API は、デベロッパー ガイドに記載されている一連の制限事項に照らして呼び出し元アプリを検証するようになりました。以下に、重要な点をいくつか例示します。
selectAds
とreportImpression
の実行時間に制限が設定されました。時間が経過すると呼び出しが終了します。selectAds
とreportImpression
で、JavaScript の実行時に消費されるメモリが制限されるようになりました。メモリの消費量が構成された上限を超えると、API がエラーをスローします。selectAds
とreportImpression
がAdSelectionConfig
オブジェクトを検証し、フィールドが構文的に有効で、URL が販売者フィールドで使用されている eTLD+1 にあることを確認するようになりました。AdServices
がカスタム オーディエンスを作成時に検証するようになりました。この検証の一部には、有効期限が有効であることの確認が含まれ、アプリが作成できるカスタム オーディエンスの数とjoinCustomAudience
の呼び出しで指定される広告の合計サイズに制限が適用されます。この検証では、シグナル、入札ロジックの取得、バックグラウンドの取得のために指定された URI がすべて、購入者のドメインにあることが強制されます。
- カスタム オーディエンス メタデータは、バックグラウンド取得プロセスによって毎日更新されます。
- 「オーナー」アプリをアンインストールすると、カスタム オーディエンスが削除されます。
- 広告選択時に信頼できるスコアリング シグナルと信頼できる入札データを指定するためのサポートを追加しました。レスポンスの形式については、コードサンプルを参照してください。
- Android 版 FLEDGE の API は、WebView バージョン 105.0.5195.58 以降に依存します。詳しくは、デベロッパー ガイドのセットアップ情報をご覧ください。
既知の問題:
カスタム オーディエンスに参加する際、メタデータと
AdData
値のいずれかが空またはnull
である場合、現時点でプラットフォームはすぐにバックグラウンド更新を行いません。カスタム オーディエンスは、1 日後に更新されるまで広告選択の対象になりません。今後のリリースでは、不完全なカスタム オーディエンスはすぐにバックグラウンド取得更新の対象となります。JavaScript 実行用の現在のデフォルト メモリ上限は低すぎるため、通常のワークロードでデバイスの JavaScriptEngine がクラッシュする可能性があります。JavaScript の実行がエラー メッセージ"Fatal javascript OOM in CALL_AND_RETRY_LAST"
で予期せず終了することがあります。次のコマンドで適切なメモリしきい値を構成することで、これを手動で解決できます。
adb shell "device_config put adservices fledge_js_isolate_enforce_max_heap_size 10485760"
必要な JSON 構造と一致しないカスタム オーディエンス広告は、バックグラウンド取得時に更新されます。
Topics API
ツールのアップデート
Android Studio Canary では、新しいモジュール タイプでの SDK APK のビルドがサポートされます。SDK ランタイム デベロッパー ガイドが更新されました。GitHub のプライバシー サンドボックス サンプルアプリにも内容が反映されています。
デベロッパー プレビュー 4
リリース日: 2022 年 7 月 14 日
Android 版プライバシー サンドボックス デベロッパー プレビュー 4 では、以下の点が改善されました。
SDK ランタイム
sendData()
の追加により、アプリがランタイム対応の SDK(RE-SDK)と通信できるようになりました。- SDK ランタイム プロセスでローカル ストレージを利用できるようになりました。
- SDK は、SDK ランタイムで単体の動画ベースの広告やコンテンツをレンダリングすることもできます。
- コンテンツが別の RE-SDK にない場合にリフレクションを使用できることなど、リフレクションの使用についての説明を追加しました。
Attribution Reporting API
このリリースでは、Attribution Reporting API の使用に関してわかりやすくするために、以下のような変更を行いました。
- 集計レポートの形式を読みやすくなるように変更しました。
- コンバージョン フィルタリングと単価調整機能のヘッダー フィールドを更新しました。
- WebApp API リファレンスに、ソースとトリガーの登録や、プライバシーと同意の API の提供状況に関する説明を追加しました。
FLEDGE on Android API
このリリースには、テストとデバッグを容易にするための新機能と内部の改善が含まれています。
- 開発中に JavaScript ロジックを取得するためのリモート URL をオーバーライドできるようにしました。
- 広告選択の際のエラーレポートを改善しました。
- 無効なカスタム オーディエンスは、広告の選択時に除外されるようになりました。
Topics API
このリリースには、Topics API に対する重要な変更が複数含まれています。
getTopics()
API の戻り値の型が、分類のトピックに対応する整数 ID や、分類器と分類バージョンに関する情報をカプセル化する、新しいオブジェクト型Topic
に変更されました。この API を使用する既存のアプリは更新する必要があります。- Topics API に、新しい標準の権限が必要になりました。
- 公開されているアプリ情報に基づいてトピックを動的に割り当てる「オンデバイス分類器」システムを導入しました。
既知の問題
これらのデバイス イメージの最初のリリース(リビジョン 6)は、Android Emulator バージョン 31.2.10 では読み込まれません。この問題に対処したデバイス イメージの更新が、2022 年 7 月 27 日より利用可能になりました。
デベロッパー プレビュー 3
リリース日: 2022 年 6 月 9 日
Android 版プライバシー サンドボックス デベロッパー プレビュー 3 では、Attribution Reporting API と Android 版 FLEDGE の機能が追加されました。
Attribution Reporting API
Attribution Reporting API は、クロスパーティ ユーザー ID への依存をなくすことでユーザーのプライバシーを向上させ、アプリ間でのアトリビューションとコンバージョン測定の主なユースケースをサポートしています。
このリリースには、以下の Attribution Reporting API の機能のテストに役立つデベロッパー向けリソースが含まれています。
- アトリビューション ソースを登録して、イベントをトリガーする
- ソース優先のインストール後アトリビューションを活用する
- イベント レポートを受信する
- 集約可能なレポートを受信する(今回のリリースでは暗号化されいてません)
テスト用のサンプルアプリとリファレンス広告テクノロジー サーバーが用意されています。
既知の問題:
- Attribution Reporting API では、設計案に従って、集約レポートはまだ暗号化されていません。テストのために、暗号化が実装されるまでレポート ペイロードはクリアテキストで送信されます。
Android 版 FLEDGE
Android 版 FLEDGE では、新しい方法を導入して、アプリのデベロッパーが定義する「カスタム オーディエンス」とアプリ内のインタラクションに基づいて広告を表示します。このソリューションでは、この情報と関連する広告をローカルに保存し、広告選択ワークフローを調整するためのフレームワークを提供します。
このリリースには、以下の Android 版 FLEDGE の機能のテストに役立つデベロッパー向けリソースが含まれています。
- カスタム オーディエンスへの参加、またはそこからの脱退、およびパラメータ値がオークション結果に与える影響の確認
- リモート エンドポイントからの JavaScript オークション コードの取得
- オンデバイスの広告オークションの設定と開始
- インプレッション レポートの処理
- テストに役立つサンプルアプリとモックサーバー構成の提供
既知の問題:
- カスタム オーディエンスは、「有効化時刻」前でも広告選択に参加できます。
デベロッパー プレビュー 2
リリース日: 2022 年 5 月 17 日
デベロッパー プレビュー 2 には、MeasurementManager
アトリビューション レポート API の早期プレビューが含まれています。
registerSource()
とregisterTrigger()
を呼び出すと、アプリ広告イベントを登録して、アプリ間のアトリビューションに関するイベントレベルのレポートデータを受け取ることができます。現在の実装ではラストタッチ アトリビューションが使用されています。レポートは、レポート ウィンドウの定義に従って送信されるようにスケジュール設定されています。詳細については、MeasurementManager
API リファレンスをご覧ください。実際のレポートのアップロードは、スケジュール設定の厳密な時刻ではなく、一定の時間間隔の終わりに行われます。レポートのアップロード間隔はデフォルトで 4 時間ですが、次の adb コマンドを使用してオーバーライドできます。
adb shell device_config put adservices measurement_main_reporting_job_period_ms <duration in milliseconds>
API テスト用のサンプルアプリとリファレンス広告テクノロジー サーバーは、今後のリリースで公開される予定です。
集計レポート、インストール後のアトリビューション、リダイレクトなど、
MeasurementManager
アトリビューション レポート API の他の機能は、今後のリリースで利用できるようになる予定です。
デベロッパー プレビュー 1
リリース日: 2022 年 4 月 28 日
デベロッパー プレビュー 1 には、Topics API と SDK ランタイムの早期プレビューが含まれています。Android 版 FLEDGE とアトリビューション レポート API の機能は、今後のリリースで利用できるようになります。
- Topics API
- 現在のところ、
getTopics()
API は一部のアプリのオフライン分類に基づいてテスト値を返します。デバイス上の分類はまだ実装されていません。 - adb コマンドを使用すると、エポック間隔のオーバーライドや、エポック計算の強制トリガーを行うことができます。
- 詳しくは、Topics のデベロッパー ガイドをご覧ください。
- 現在のところ、
- SDK ランタイム
- SDK アプリのマニフェスト ファイルで新しい
<sdk-library>
要素を使用すると、ランタイム対応 SDK(RE SDK)をパッケージ化してビルドできます。開発中にアプリを通常どおりインストールする場合と同様に、サポートされているテストデバイスまたはエミュレータに RE SDK をインストールします。 - アプリを RE SDK と統合し、SDK ランタイムに読み込み、アクセス制限の影響を SDK コードでテストできます(権限、メモリ、アプリと SDK の間の通信)。RE SDK 用のストレージ API はまだ実装されておらず、今後のリリースで利用できるようになります。
- SDK は、SDK ランタイムで
WebView
ベースのバナー広告またはコンテンツをレンダリングできます。 - 詳しくは、SDK ランタイムのデベロッパー ガイドをご覧ください。
- SDK アプリのマニフェスト ファイルで新しい
- Android lint チェック
- API レベル
TiramisuPrivacySandbox
でコンパイルされたプロジェクトでは、Android lint チェックで警告が誤って表示されることがあります。たとえば、「呼び出しには API レベル 33 が必要です」などといった警告メッセージが表示されることがあります。この問題に一時的に対処するには、@SuppressLint("NewApi")
アノテーションを使用します。
- API レベル