Android 用 SDK のプライバシー
Xandr のモバイル SDK には、グローバル プライバシー プラットフォーム (GPP)、 一般データ保護規則 (GDPR)、 カリフォルニア州消費者保護法 (CCPA) と デジタル サービス法 (DSA) のクライアント サポートが含まれます。
グローバル プライバシー プラットフォーム (GPP) を使用すると、広告主、パブリッシャー、テクノロジ ベンダーは、市場全体の規制要求に適応できます。 GDPR は、欧州連合内の個人データの処理、移動、保護に関する規制を提供します。 CCPAは、組織が収集した個人情報へのアクセス、削除、共有に関する新しい消費者権利を作成します。 DSAは、デジタル広告の透明性を高めることを目的とした欧州連合の主要な立法措置であり、オンライン サービスの透明性、説明責任、ユーザー保護を促進する主要な目的を持っています。
警告
このリソースは法的アドバイスとして解釈されるべきではありません。Xandr は、法律や規制の遵守について保証しません。 すべての企業とその個人データの収集、使用、保管は異なるため、GDPR や既存の ePrivacy ディレクティブなど、欧州の規制に基づく義務に関連する独立した法的アドバイスも求める必要があることに注意してください。 あなたの状況に合わせて特別に調整された法的アドバイスを提供できるのは弁護士だけです。 このガイドでは、ビジネスに合わせて調整された法的アドバイスを提供することを目的としたものではありません。または、代替として使用する必要があります。
注:
パブリッシャーは、通知、透明性、選択を提供し、 フレームワーク ポリシーに従ってユーザーからの同意を収集する責任を負います。独自の同意管理プロバイダーを使用するか、ベンダーと協力します。 >- 独自の CMP を登録する> - 登録済み CMP の一覧
Microsoft のサービス ポリシー (購入、販売、およびデータ プロバイダー向け) には、プライバシー固有の義務が含まれており、お客様は注意する必要があります。
すべてのベンダー SDK (仲介 SDK を含む) は、承認されたベンダーと同意情報を自分で検索する責任があります。Xandr は、これらの SDK にこの情報を渡しません。
一般的なデータ保護規則 (GDPR)
お客様が GDPR および既存の ePrivacy ディレクティブに基づく透明性、通知、選択/同意の要件を満たすために、Xandr は IAB Europe Transparency & Consent Framework ("Framework") をサポートしています。
これは、Xandr の Mobile SDK を使用して、EEA に配置されたエンド ユーザーに通知、透明性、選択を示し、承認されたベンダーに通知し、必要に応じて同意を Xandr と需要ソースとそのベンダーに Xandr プラットフォームを通じて渡すモバイル アプリの発行元向けのリファレンスです。
Xandr には、モバイル アプリ発行元がフレームワークを使用するための 3 つの API が Mobile SDK に用意されています。 これらの API は、Android の場合は Mobile SDK バージョン 4.8 以降、iOS の場合は 4.7.1 以降で利用できます。 これらの API を使用すると、次のことができるようになります。
- ユーザーが欧州経済地域 ("EEA") に配置されているかどうか、およびヨーロッパのプライバシー規制を適用する必要があるかどうかを定義します
- IAB Europe (IAB) 同意文字列を設定する
- IAB ヨーロッパ (IAB) の目的の同意を設定する
この情報は SDK によって永続化され、プラットフォーム コントロールを適用するための各広告呼び出しに追加されます。
Publishers/Consent Management Platforms (CMP) は、新しい API を介して渡す代わりに SharedPreferences インターフェイス ( Mobile In-App CMP API v2.0: Transparency & Consent Framework で定義) に自由に格納でき、SDK は値をフォールバックとして読み取ります。
/** * Set the consentRequired value in the SDK
*
* @param true if subject to GDPR regulations, false otherwise
*/
ANGDPRSettings.setConsentRequired(context,true);
/**
* Set the consent string in the SDK
*
* @param A valid Base64 encode consent string as per
* https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework
*/
ANGDPRSettings.setConsentString(context,"BOMyQRvOMyQRvABABBAAABAAAAAAEA");
/**
* Set the purpose consents in the SDK
*
* @param A valid Binary String: The '0' or '1' at position n – where n's indexing begins at 0 – indicates the consent status for purpose ID n+1; false and true respectively. eg. '1' at index 0 is consent true for purpose ID 1
*/
ANGDPRSettings.setPurposeConsents(context,"101010001");
注:
適切な収益化と関連するターゲット設定を確実に行うために、SDK がデバイス情報の送信を有効にする必要があります。
consentRequired
とpurposeConsents
フラグを正しく設定すると、適切なデバイス情報が確実に送信されます。 デバイスの詳細が渡されるかどうかを判断するには、次の表を参照してください。
同意とデバイス情報ロジック
次の表では、consentRequired
値と組み合わせて異なるpurposeConsents
値に基づく SDK の動作について説明します。
deviceAccessConsent |
true |
false |
undefined |
---|---|---|---|
consentRequired=false |
SDK はデバイス情報を渡します。 | SDK はデバイス情報を渡します。 | SDK はデバイス情報を渡します。 |
consentRequired=true |
SDK はデバイス情報を渡します。 | SDK はデバイス情報を渡しません。 | SDK はデバイス情報を渡しません。 |
consentRequired=undefined |
SDK はデバイス情報を渡します。 | SDK はデバイス情報を渡しません。 | SDK はデバイス情報を渡します。 |
カリフォルニア州消費者プライバシー法 (CCPA)
Xandr には、SDK ユーザーが米国のプライバシー ユーザー シグナル メカニズム コントロールを設定、取得、クリアできる 3 つの API が用意されています。 IAB Tech Lab は、CCPA から始まるさまざまな米国のプライバシー法に基づき、ユーザーとユーザーの選挙に開示された情報に関するデータをエンコードするメカニズムとして、 "us_privacy"
文字列を正式化し、採用しました。
この情報は SDK によって永続化され、プラットフォーム コントロールを適用するための各広告呼び出しに追加されます。
Publishers/Consent Management Platforms (CMK) は、新しい API を介して渡す代わりに、これらの値を SharedPreferences インターフェイス (IAB の CCPA コンプライアンス メカニズムで定義) に自由に格納でき、SDK は値をフォールバックとして読み取ります。
/**
* Set the IAB US Privacy String in the SDK
*
* @param privacyString will be set and pass string to Ad Server
*/
ANUSPrivacySettings.setUSPrivacyString(context,"1YNN");
/**
* Get the IAB US Privacy String that will be sent in the request.
*
* @param context
* @return Return IAB US Privacy String set by Publisher
*/
ANUSPrivacySettings.getUSPrivacyString(context);
/**
* Clear the value of IAB US Privacy String that was previously set using setUSPrivacyString
*
* @param context
*/
ANUSPrivacySettings.reset(context);
グローバル プライバシー プラットフォーム (GPP)
グローバルプライバシープラットフォーム は、ウェブサイトやアプリから広告技術プロバイダーへのプライバシー、同意、消費者の選択信号の送信を合理化するように設計された単一のプロトコルです。 これらの信号は、GPP String と呼ばれる標準化された、簡単に通信できるペイロードにパッケージ化されています。 事前に解析された GPP データと GPP 文字列は、 SharedPreferences (Android) の下に格納する必要があります。 これにより、次の操作が可能になります。
- ベンダーは、GPP データに簡単にアクセスできます。
- アプリ セッション間で保持する GPP データ。
- パブリッシャーが CMP SDK を別の CMP SDK と交換する柔軟性を提供するために、同意管理プラットフォーム (CMP) 間で移植可能な GPP データ。
- アプリ内のベンダーは、一般的なすべてのユース ケースを有効にしながら、GPP 文字列デコーダーを含める必要なく、コードの重複を回避します。
注:
パブリッシャーがアプリから CMP SDK を削除することを選択した場合、ベンダーが GPP データを引き続き使用しないように、ユーザーのすべてのIABGPP_* の痕跡値をクリアする責任があります。
Xandr SDK は SharedPreferences から値を読み取り、広告呼び出しに渡されます。 SDK がクエリを実行する文字列を次に示します。
キーの名前 | データ型 | 説明 |
---|---|---|
IABGPP_HDR_GppString |
string | エンコードされた形式の完全な同意文字列。 例えば "DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN" |
IABGPP_GppSID |
string | セクション ID が強制されていると見なされます。 複数の ID はアンダースコアで区切られます (例: )。 “2_3” |
デジタル サービス法 (DSA)
デジタル サービス法 (DSA) は、インターネット上の違法および有害な活動を抑制し、情報の拡散を軽減することを主な目的とするオンライン仲介およびプラットフォームを監督します。 DSAは、デジタル広告の透明性を高めることを目的とした欧州連合の主要な立法措置であり、オンライン サービスの透明性、説明責任、ユーザー保護を促進する主要な目的を持っています。
SDK で DSA 値を設定する
- SDK が広告呼び出しに値を渡す
/**
* Set the DSA information requirement.
* 0 = Not required
* 1 = Supported, bid responses with or without DSA object will be accepted
* 2 = Required, bid responses without DSA object will not be accepted
* 3 = Required, bid responses without DSA object will not be accepted, Publisher is an Online Platform
*
* @param dsaRequired The DSA information requirement value to be set.
*/
ANDSASettings.setDSARequired(1);
/**
* Set if the publisher renders the DSA transparency info.
* 0 = Publisher can't render
* 1 = Publisher could render depending on adrender
* 2 = Publisher will render
*
* @param pubRender The value indicating whether the publisher renders DSA transparency info.
*/
ANDSASettings.setPubRender(0);
/**
* Set the transparency list using the provided list of ANDSATransparencyInfo.
*
* @param domain The domain of the entity that applied user parameters.
* @param params The list of user parameters used for the platform or sell-side.
*/
ArrayList<ANDSATransparencyInfo> transparencyList = new ArrayList<>();
transparencyList.add(new ANDSATransparencyInfo("example.com", new ArrayList<>(Arrays.asList(1, 2, 3))));
transparencyList.add(new ANDSATransparencyInfo("example.net", new ArrayList<>(Arrays.asList(4, 5, 6))));
ANDSASettings.setTransparencyList(transparencyList);
- SDK で設定された DSA 値を取得する
ANDSASettings.getDSARequired()
ANDSASettings.getPubRender()
ANDSASettings.getTransparencyList()
DSA 応答値を取得する
注:
ANDSAResponseInfo は、バナー広告ビューとは別に、Video Ad インスタンス、スポット広告ビュー インスタンス、ネイティブ広告応答を使用して取得できます。
コード サンプル Java
// Request Banner Ad
bav = new BannerAdView(this);
bav.setPlacementID("1"); // Placement ID
bav.setAdSize(300, 250); // Size
bav.setAdListener(this) // AdListener
// On Ad Loaded
@Override
public void onAdLoaded(AdView bav) {
log("Banner Ad Loaded");
ANDSAResponseInfo dsaResponseInfo = bav.getAdResponseInfo().getDSAResponseInfo();
/**
* Retrieve on whose behalf the ad is displayed.
*/
String behalf = dsaResponseInfo.getBehalf();
/**
* Retrieve who paid for the ad.
*/
String paid = dsaResponseInfo.getPaid();
/**
* Retrieve the transparency user parameters info
*/
ArrayList<ANDSATransparencyInfo> transparencyList = dsaResponseInfo.getTransparencyList();
for(int i = 0; i <= transparencyList.size(); i++) {
ANDSATransparencyInfo tranparencyInfo = transparencyList.get(i);
String domain = tranparencyInfo.getDomain();
ArrayList<Integer> params = tranparencyInfo.getDSAParams();
}
/**
* Retrieve indicating if the buyer/advertiser will render DSA transparency info.
* 0 = buyer/advertiser will not render
* 1 = buyer/advertiser will render
*/
int adRender = dsaResponseInfo.getAdRender();
}
コード サンプル Kotlin
// Request Banner Ad
banner = BannerAdView(this)
banner.placementID = "1" // PlacementID
banner.setAdSize(300, 250) // Size
banner.adListener = this // AdListener
banner.loadAd()
// On Ad Loaded
override fun onAdLoaded(ad: AdView?) {
log("Banner Ad Loaded")
val dsaResponseInfo: ANDSAResponseInfo = bav.adResponseInfo.dsaResponseInfo
/**
* Retrieve on whose behalf the ad is displayed.
*/
val behalf: String? = dsaResponseInfo.behalf
/**
* Retrieve who paid for the ad.
*/
val paid: String? = dsaResponseInfo.paid
/**
* Retrieve the transparency user parameters info
*/
val transparencyList: ArrayList<ANDSATransparencyInfo> = dsaResponseInfo.transparencyList
for (i in 0 until transparencyList.size) {
val transparencyInfo: ANDSATransparencyInfo = transparencyList[i]
val domain: String = transparencyInfo.domain
val params: ArrayList<Int> = transparencyInfo.getDSAParams()
}
}
/**
* Retrieve indicating if the buyer/advertiser will render DSA transparency info.
* 0 = buyer/advertiser will not render
* 1 = buyer/advertiser will render
*/
val adRender: Int = dsaResponseInfo.adRender
コード サンプル (ビデオ広告)
Java
//Video Ad
ANDSAResponseInfo dsaResponseInfo = videoAd.getAdResponseInfo().getDSAResponseInfo()
//Native Ad
ANDSAResponseInfo dsaResponseInfo = nativeAdResponse.getAdResponseInfo().getDSAResponseInfo()
//Insterstitial Ad View
ANDSAResponseInfo dsaResponseInfo = interstitial.getAdResponseInfo().getDSAResponseInfo()