Android SDK には、グローバル プライバシー プラットフォーム (GPP)、 一般データ保護規則 (GDPR)、 カリフォルニア州消費者保護法 (CCPA) および デジタル サービス法 (DSA) のクライアント サポートが含まれています。
グローバル プライバシー プラットフォーム (GPP) を使用すると、広告主、パブリッシャー、テクノロジ ベンダーは、さまざまな市場の規制要求に適応できます。 GDPR は、欧州連合内での個人データの処理、移動、保護に関する規制を規定しています。 CCPA では、組織によって収集された個人情報へのアクセス、削除、共有に関連する新しい消費者の権利が作成されます。 DSA は、デジタル広告の透明性を高めることを目的とした欧州連合による重要な立法措置であり、オンライン サービスにおける透明性、説明責任、ユーザー保護を促進することが中核的な目的です。
警告
このリソースは法的なアドバイスとして解釈されるべきではなく、Microsoft はいかなる法律または規制への準拠についても保証しません。 企業によって、また個人データの収集、利用、保存はそれぞれ異なるため、GDPR や既存の ePrivacy 指令など、欧州の規制に基づく義務に関する独立した法的助言も求める必要があります。 あなたの状況に合わせた法的アドバイスを提供できるのは弁護士だけです。 このガイドのいずれの内容も、お客様のビジネスに合わせた法的アドバイスを提供することを目的としたものではなく、また、その代わりに使用されるべきものではありません。
注:
パブリッシャーは、通知、透明性、選択肢を提供し、フレームワーク ポリシーに従って、独自の同意管理プロバイダーを使用するかベンダーと協力してユーザーから同意を得る責任があります。 > - 自分のCMPを登録する> - 登録済みCMPのリスト
当社のサービス ポリシー (売買、およびデータ プロバイダー向け) には、お客様が知っておくべきプライバシー固有の義務が含まれています。
すべてのベンダー SDK (メディエーション SDK を含む) は、承認済みのベンダーと同意情報を独自に検索する責任があります。Microsoft Monetize は、この情報をこれらの SDK に渡しません。
一般データ保護規則 (GDPR)
お客様が GDPR および既存の ePrivacy 指令に基づく透明性、通知、選択/同意の要件を満たすために、Microsoft Monetize は IAB Europe Transparency & Consent Framework (以下「フレームワーク」) をサポートしています。
これは、Android SDK を使用するモバイル アプリ発行元が、EEA に所在するエンド ユーザーに通知、透明性、選択を明示し、承認されたベンダーに信号を送り、必要に応じて Microsoft Monetize に同意を与え、Monetize プラットフォームを通じてソースとそのベンダーを要求するためのリファレンスです。
Android SDK には、モバイル アプリの発行元がフレームワークを使用するための 3 つの API が用意されています。 これらの API を使用すると、次のことが可能になります。
- ユーザーが欧州経済地域 ("EEA") に居住しているかどうか、およびヨーロッパのプライバシー規制が適用される必要があるかどうかを定義します
- IAB ヨーロッパ (IAB) の同意文字列を設定する
- IAB ヨーロッパ (IAB) の目的に関する同意を設定します
この情報は SDK によって保持され、プラットフォーム コントロールを適用するために各広告呼び出しに追加されます。
パブリッシャー/同意管理プラットフォーム (CMP) は、これらの値を新しい API を介して渡す代わりに、SharedPreferences インターフェイス ( Mobile In-App CMP API v2.0: Transparency & Consent Framework で定義) に自由に保存できます。SDK は値をフォールバックとして読み取ります。
ANGDPRSettings では、次の方法を使用します。
| メソッド | 説明 |
|---|---|
public static void setConsentRequired(Context context, boolean subjectToGDPR) |
ユーザーが GDPR 規制の対象であるかどうかを設定します。 |
public static void setConsentString(Context context, String consentString) |
IAB Base64 でエンコードされた同意文字列を設定します。 |
public static void setPurposeConsents(Context context, String purposeConsents) |
IAB 目的の同意バイナリ文字列を設定します。
'0'または、位置 n の'1' (0 からのインデックス作成) は、目的 ID n+1 の同意の状態を示します。 |
// Set whether the user is subject to GDPR regulations
ANGDPRSettings.setConsentRequired(context, true)
// Set the IAB Base64-encoded consent string
ANGDPRSettings.setConsentString(context, "BOMyQRvOMyQRvABABBAAABAAAAAAEA")
// Set the IAB purpose consents (binary string; '1' at index n = consent for purpose ID n+1)
ANGDPRSettings.setPurposeConsents(context, "101010001")
注:
適切な収益化と関連するターゲティングを確保するには、SDK を有効にしてデバイス情報を送信する必要があります。
consentRequired および purposeConsents フラグを正しく設定すると、適切なデバイス情報が送信されます。 デバイスの詳細が渡されるかどうかを確認するには、次の表を参照してください。
同意とデバイス情報のロジック
次の表では、さまざまな purposeConsents 値と consentRequired 値の組み合わせに基づく SDK の動作について説明します。
deviceAccessConsent |
true |
false |
undefined |
|---|---|---|---|
consentRequired=false |
SDK はデバイス情報を渡します。 | SDK はデバイス情報を渡します。 | SDK はデバイス情報を渡します。 |
consentRequired=true |
SDK はデバイス情報を渡します。 | SDK はデバイス情報を渡しません。 | SDK はデバイス情報を渡しません。 |
consentRequired=undefined |
SDK はデバイス情報を渡します。 | SDK はデバイス情報を渡しません。 | SDK はデバイス情報を渡します。 |
カリフォルニア州消費者プライバシー法 (CCPA)
Android SDK には、SDK ユーザーが米国のプライバシー ユーザー署名メカニズムの制御を設定、取得、クリアできるようにする 3 つの API が用意されています。 IAB Tech Lab では、CCPA を始めとする米国のさまざまなプライバシー法に基づき、ユーザーおよびユーザーの選挙に開示される情報に関するデータをエンコードするメカニズムとして、 "us_privacy" 文字列を正式に確立し、採用しました。
この情報は SDK によって保持され、プラットフォーム コントロールを適用するために各広告呼び出しに追加されます。
パブリッシャー/同意管理プラットフォーム (CMP) は、これらの値を新しい API を介して渡す代わりに、(IAB の CCPA コンプライアンス メカニズムで定義されている) SharedPreferences インターフェイスに自由に格納できます。また、SDK は値をフォールバックとして読み取ります。
ANUSPrivacySettings では、次の方法を使用します。
| メソッド | 説明 |
|---|---|
public static void setUSPrivacyString(Context context, String privacyString) |
SDK で IAB US プライバシー文字列を設定します。 |
public static String getUSPrivacyString(Context context) |
現在 SDK にある IAB US プライバシー文字列を取得します。 |
public static void reset(Context context) |
以前に設定した IAB US プライバシー文字列をクリアします。 |
// Set the IAB US Privacy String in the SDK
ANUSPrivacySettings.setUSPrivacyString(context, "1YNN")
// Get the IAB US Privacy String that will be sent in the request
val privacyString: String? = ANUSPrivacySettings.getUSPrivacyString(context)
// Clear the previously set IAB US Privacy String
ANUSPrivacySettings.reset(context)
児童オンライン プライバシー保護法 (COPPA)
アプリの広告要求が 13 歳未満の子供を対象とする場合、米国 児童オンライン プライバシー保護法 (COPPA) が適用されます。 COPPA が有効になっている場合、SDK は広告要求で user.coppa = true を送信し、ダウンストリーム システムがそれらのユーザーの個人情報の収集を制限できます。
SDKSettings.setCOPPA(boolean) API を使用して、現在のセッションが COPPA の対象であることを示します。 この値は、変更されるまで、以降のすべての広告要求に適用されます。 既定値は、false です。
SDKSettings では、次の方法を使用します。
| メソッド | 説明 |
|---|---|
public static void setCOPPA(boolean coppa) |
現在のセッションが COPPA の対象であることの通知。 既定値は、false です。 |
public static boolean getCOPPA() |
COPPA が現在有効になっている場合falseそれ以外の場合は true を返します。 |
// Enable or disable COPPA for the current session
SDKSettings.setCOPPA(true)
// Check whether COPPA is currently enabled
val coppa: Boolean = SDKSettings.getCOPPA()
グローバル プライバシー プラットフォーム (GPP)
グローバル プライバシー プラットフォーム は、プライバシー、同意、消費者の選択のシグナルを Web サイトやアプリから広告技術プロバイダーに送信する合理化を目的に設計された単一のプロトコルです。 これらの信号は、GPP 文字列と呼ばれる標準化された、簡単に通信できるペイロードにパッケージ化されています。 事前に解析された GPP データと GPP 文字列は、 SharedPreferences (Android) の下に格納されます。 これにより、次が可能になります。
- GPP データに簡単にアクセスできるよう支援します。
- アプリ セッション間で保持される GPP データ。
- パブリッシャーが CMP SDK を別の CMP SDK に交換する柔軟性を提供するため、同意管理プラットフォーム (CMP) 間で GPP データを移植可能にする。
- アプリ内のベンダーは、GPP 文字列デコーダーを含める必要がなく、すべての一般的なユース ケースを有効にしながら、コードの重複を回避します。
注:
パブリッシャーがアプリから CMP SDK を削除することを選択した場合、ベンダーがその中の GPP データを使用し続けることがないように、ユーザーのすべてのIABGPP_* 痕跡値をクリアする必要があります。
その後、Android SDK が SharedPreferences から値を読み取って広告呼び出しに渡します。 SDK がクエリを実行する文字列を次に示します。
| キーの名前 | データ型 | 説明 |
|---|---|---|
IABGPP_HDR_GppString |
string | エンコードされた形式の完全な同意文字列。 例: "DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN" |
IABGPP_GppSID |
string | 有効と見なされるセクション ID。 複数の ID はアンダースコアで区切られます (例: “2_3” |
デジタル サービス法 (DSA)
デジタル サービス法 (DSA) はオンライン仲介業者とプラットフォームを監督しており、その主な目的はインターネット上の違法で有害な活動を抑制し、偽情報の拡散を軽減することです。 DSA は、デジタル広告の透明性を高めることを目的とした欧州連合による重要な立法措置であり、オンライン サービスにおける透明性、説明責任、ユーザー保護を促進することが中核的な目的です。
SDK で DSA 値を設定および取得する
SDK はこれらの値を広告呼び出しに渡します。
ANDSASettings では、次の方法を使用します。
| メソッド | 説明 |
|---|---|
public static void setDSARequired(int dsaRequired) |
DSA 情報の要件を設定します。
0 = 必須ではない、 1 = サポートされている、 2 = 必須、 3 = 必須 + パブリッシャーはオンライン プラットフォームです。 |
public static int getDSARequired() |
現在の DSA 情報要件を返します。 |
public static void setPubRender(int pubRender) |
発行元が DSA 透明度情報を表示するかどうかを設定します。
0 = パブリッシャーはレンダリングできません、 1 = パブリッシャーはアドレンダーに応じてレンダリングする可能性があります、 2 = パブリッシャーはレンダリングします。 |
public static int getPubRender() |
現在のパブリッシャーレンダリング設定を返します。 |
public static void setTransparencyList(ArrayList<ANDSATransparencyInfo> transparencyList) |
ANDSATransparencyInfo エントリを使用して透明度リストを設定します。 |
public static ArrayList<ANDSATransparencyInfo> getTransparencyList() |
現在の透明度リストを返します。 |
// Set DSA information requirement (0=Not required, 1=Supported, 2=Required, 3=Required + Online Platform)
ANDSASettings.setDSARequired(1)
// Set publisher render behavior (0=Can't render, 1=Depends on adrender, 2=Will render)
ANDSASettings.setPubRender(0)
// Set the transparency list
ANDSASettings.setTransparencyList(arrayListOf(
ANDSATransparencyInfo("example.com", arrayListOf(1, 2, 3)),
ANDSATransparencyInfo("example.net", arrayListOf(4, 5, 6))
))
DSA 応答値を取得する
ANDSAResponseInfo では、次の方法を使用します。
| メソッド | 説明 |
|---|---|
public String getBehalf() |
誰の代わりに広告が表示されるか。 |
public String getPaid() |
広告の支払い者。 |
public ArrayList<ANDSATransparencyInfo> getTransparencyList() |
透明性ユーザー パラメーター情報。 |
public int getAdRender() |
購入者/広告主が DSA 透明性情報を表示するかどうか。
0 = はレンダリングしません。 1 = はレンダリングします。 |
val banner = BannerAdView(this)
banner.placementID = "1"
banner.setAdSize(300, 250)
banner.adListener = this
banner.loadAd()
override fun onAdLoaded(ad: AdView?) {
// The example uses `banner`. For other ad units, use:
// videoAd.adResponseInfo.dsaResponseInfo
// nativeAdResponse.adResponseInfo.dsaResponseInfo (in NativeAdRequestListener.onAdLoaded)
// interstitial.adResponseInfo.dsaResponseInfo
banner.adResponseInfo.dsaResponseInfo?.let { info ->
val behalf: String? = info.behalf // Advertised on behalf of
val paid: String? = info.paid // Paid by
val adRender: Int = info.adRender // 0 = won't render, 1 = will render
for (t in info.transparencyList) {
val domain: String = t.domain
val params: ArrayList<Int> = t.getDSAParams()
}
}
}