HUAWEI Ads的用戶意見征求,華為ads需要打開嗎HUAWEI Ads的用戶意見征求在法律有相應要求的情況下,您必須征得用戶的同意才能使用其個人數據(例如OAID)來投放廣告。HUAWEI Ads平臺投放的廣告包括個性化廣告和非個性化廣告。為了征求用戶意見,HUAWEI Ads平臺提供了Consent SDK。本......
在法律有相應要求的情況下,您必須征得用戶的同意才能使用其個人數據(例如OAID)來投放廣告。
HUAWEI Ads平臺投放的廣告包括個性化廣告和非個性化廣告。為了征求用戶意見,HUAWEI Ads平臺提供了Consent SDK。
本章節介紹了如何使用Consent SDK征求用戶意見,以及在征得用戶意見后如何根據用戶意見獲取廣告。
Consent SDK使用
1.集成Consent SDK。
a.在項目級build.gradle文件中配置Maven倉地址:
buildscript {
repositories {
google()
jcenter()
//配置Consent SDK的Maven倉地址
maven { url https://developer.huawei.com/repo/ }
}
...
}
allprojects {
repositories {
google()
jcenter()
//配置Consent SDK的Maven倉地址
maven { url https://developer.huawei.com/repo/ }
}
}
b.在應用級的build.gradle文件中添加編譯依賴:
c.將{version}替換為實際的版本號,版本號索引請參見版本更新說明,修改如下:
dependencies {
implementation com.huawei.hms:adsconsent:3.4.39.302
}
在完成以上的配置后,點擊工具欄中的gradle同步圖標,完成“build.gradle”文件的同步,將相關依賴下載到本地。
2.更新用戶意見狀態。
使用Consent SDK時,應確保Consent SDK獲得的是HUAWEI Ads平臺廣告技術提供商的最新信息。如果在征求用戶意見后,廣告技術提供商的列表發生改變,則Consent SDK會自動將用戶意見置為未知狀態。因此在每次啟動應用時都必須通過調用requestConsentUpdate()方法確定用戶的意見狀態。
示例代碼如下所示:
Java
...
import com.huawei.hms.ads.consent.*;
...
public class ConsentActivity extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// 檢查consent狀態
checkConsentStatus();
...
}
...
private void checkConsentStatus() {
...
Consent consentInfo = Consent.getInstance(this);
...
consentInfo.requestConsentUpdate(new ConsentUpdateListener() {
@Override
public void onSuccess(ConsentStatus consentStatus, boolean isNeedConsent, ListAdProvider adProviders) {
// 獲取用戶意見狀態成功
...
}
@Override
public void onFail(String errorDescription) {
// 獲取用戶意見狀態失敗
...
}
});
...
}
...
}
Kotlin
...
import com.huawei.hms.ads.consent.*
...
class ConsentActivity : BaseActivity() {
...
override fun onCreate(savedInstanceState: Bundle ) {
...
// 檢查consent狀態
checkConsentStatus()
...
}
...
private fun checkConsentStatus() {
...
val consentInfo = Consent.getInstance(this)
...
consentInfo.requestConsentUpdate(object : ConsentUpdateListener {
override fun onSuccess(consentStatus: ConsentStatus, isNeedConsent: Boolean, adProviders: ListAdProvider) {
// 獲取用戶意見狀態成功
...
}
override fun onFail(errorDescription: String) {
// 獲取用戶意見狀態失敗
...
}
})
...
}
...
}
如果成功更新用戶意見信息,那么會通過ConsentUpdateListener的onSuccess()方法提供更新后的用戶意見狀態參數consentStatus、是否需要Consent參數isNeedConsent和廣告技術提供商的adProviders列表。
ConsentStatus具有以下三種狀態:
·如果回調參數isNeedConsent取值為false,則表明可以向HUAWEI Ads SDK請求個性化廣告。
·如果回調參數isNeedConsent取值為true,則表明該用戶在歐洲經濟區內或其他敏感地區內,需要進一步確認用戶意見。
·當返回的ConsentStatus為PERSONALIZED或NONPERSONALIZED,則表明已征求過用戶意見,不需要再次征求。
·當返回的ConsentStatus為UNKNOWN,則需要通過彈框等方式征求用戶意見。
如果ConsentUpdateListener返回onFail()時,則直接請求非個性化廣告。
AdProvider為廣告技術提供商信息,參數定義如下:
說明
requestConsentUpdate()方法每次會請求網絡以更新廣告技術提供商列表,為了保障用戶體驗,媒體可以自行實現超時控制。
3.征求用戶意見。
您需要通過彈框等方式向用戶征求意見,并展示廣告技術提供商的完整列表。以下是通過彈框征求用戶意見的樣例:
a.彈框征求用戶意見。
示例代碼如下所示:
Java
...
import com.huawei.hms.ads.consent.*;
...
public class ConsentActivity extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// 檢查consent狀態
checkConsentStatus();
...
}
...
private void checkConsentStatus() {
...
Consent consentInfo = Consent.getInstance(this);
...
consentInfo.requestConsentUpdate(new ConsentUpdateListener() {
@Override
public void onSuccess(ConsentStatus consentStatus, boolean isNeedConsent, ListAdProvider adProviders) {
...
// 此返回參數代表是否需要consent
if (isNeedConsent) {
// UNKNOWN狀態,需要重新收集用戶信息
if (consentStatus == ConsentStatus.UNKNOWN) {
...
showConsentDialog();
}
// 如果是PERSONALIZED或者NONPERSONALIZED狀態,則不需要彈框收集用戶意見
else {
...
}
} else {
...
}
}
@Override
public void onFail(String errorDescription) {
...
}
});
...
}
...
private void showConsentDialog() {
// 開始Consent彈出框處理
ConsentDialog dialog = new ConsentDialog(this, mAdProviders);
dialog.setCallback(this);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
}
Kotlin
...
import com.huawei.hms.ads.consent.*
...
class ConsentActivity : BaseActivity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
...
// 檢查consent狀態
checkConsentStatus()
...
}
...
private fun checkConsentStatus() {
...
val consentInfo = Consent.getInstance(this)
...
consentInfo.requestConsentUpdate(object : ConsentUpdateListener {
override fun onSuccess(consentStatus: ConsentStatus, isNeedConsent: Boolean, adProviders: ListAdProvider) {
...
// 此返回參數代表是否需要consent
if (isNeedConsent) {
// UNKNOWN狀態,需要重新收集用戶信息
if (consentStatus == ConsentStatus.UNKNOWN) {
...
showConsentDialog()
}
// 如果是PERSONALIZED或者NONPERSONALIZED狀態,則不需要彈框收集用戶意見
else {
...
}
} else {
...
}
}
override fun onFail(errorDescription: String) {
// 獲取用戶意見狀態失敗
...
}
})
...
}
...
private fun showConsentDialog() {
// 開始Consent彈出框處理
val dialog = ConsentDialog(this, mAdProviders)
dialog.setCallback(this)
dialog.setCanceledOnTouchOutside(false)
dialog.show()
}
}
對話框效果圖如下:
點擊“here”跳轉至更多信息:
b.展示廣告技術提供商列表。
您需要將廣告技術提供商的名稱展示給用戶,并提供訪問廣告技術提供商隱私政策的入口。
通過點擊上述更多信息頁面中的here鏈接彈出廣告技術提供商列表對話框,效果如下:
c.設置用戶意見。
征得用戶意見后,請使用setConsentStatus()方法設置用戶的選擇。
示例代碼如下所示:
Java
Consent.getInstance(getApplicationContext()).setConsentStatus(ConsentStatus.PERSONALIZED);
Kotlin
Consent.getInstance(getApplicationContext()).setConsentStatus(ConsentStatus.PERSONALIZED)
說明
請務必讓用戶可以隨時更改或撤消意見,并將用戶更新后的意見設置給Consent SDK。
d.設置“未達到法定承諾年齡用戶”的標記。
如果您需要針對未達到法定承諾年齡的用戶請求對應的廣告,則在調用requestConsentUpdate()前必須通過調用setUnderAgeOfPromise設置“未達到法定承諾年齡用戶”的標記。
示例代碼如下所示:
Java
//設置“未達到法定承諾年齡用戶”的標記
Consent.getInstance(getApplicationContext()).setUnderAgeOfPromise(true);
Kotlin
//設置“未達到法定承諾年齡用戶”的標記
Consent.getInstance(getApplicationContext()).setUnderAgeOfPromise(true)
一旦將此設置為true,則每次requestConsentUpdate()請求均會回調onFail(String errorDescription)方法,并提供給用戶錯誤描述參數errorDescription,此時不需要再展示征求用戶意見彈框。設置為false表明用戶已達到法定承諾年齡。
說明
當Consent SDK設置了此標記后,在請求廣告時,基于受眾人群請求廣告中setTagForUnderAgeOfPromise的參數應與Consent參數保持一致。
4.根據用戶意見獲取廣告。
請求廣告時,默認不設置setNonPersonalizedAd方法,請求個性化廣告與非個性化廣告。如果用戶在Consent階段沒有做出選擇,則只能請求非個性化廣告。
如果設置setNonPersonalizedAd方法且值為:
·ALLOWALL:個性化廣告與非個性化廣告
·ALLOWNONPERSONALIZED:非個性化廣告
示例代碼如下所示:
Java
//setNonPersonalizedAd設置為ALLOWNONPERSONALIZED時,只請求非個性化廣告
RequestOptions requestOptions=HwAds.getRequestOptions();
requestOptions=requestOptions.toBuilder().setNonPersonalizedAd(ALLOWNONPERSONALIZED).build();
HwAds.setRequestOptions(requestOptions);
AdParam adParam=new AdParam.Builder().build();
adView.loadAd(adParam);
Kotlin
//setNonPersonalizedAd設置為ALLOWNONPERSONALIZED時,只請求非個性化廣告
var requestOptions:RequestOptions?=HwAds.getRequestOptions()
requestOptions=requestOptions.toBuilder().setNonPersonalizedAd(ALLOWNONPERSONALIZED).build()
HwAds.setRequestOptions(requestOptions)
val adParam=AdParam.Builder().build()
adView!!.loadAd(adParam)
Consent SDK測試
為了讓您能輕松地測試應用,Consent SDK提供了可設置的調試選項。
1.調用getTestDeviceId()獲取設備ID。
示例代碼如下所示:
Java
String testDeviceId=Consent.getInstance(getApplicationContext()).getTestDeviceId();
Kotlin
val testDeviceId = Consent.getInstance(getApplicationContext()).testDeviceId
2.使用獲取的設備ID將您的設備作為調試設備列入允許清單。
示例代碼如下所示:
Java
Consent.getInstance(getApplicationContext()).addTestDeviceId(testDeviceId);
Kotlin
Consent.getInstance(getApplicationContext()).addTestDeviceId(testDeviceId)
調用setDebugNeedConsent設置是否需要Consent。
示例代碼如下所示:
Java
//設置調試需要Consent,此時ConsentUpdateListener方法返回的isNeedConsent參數為true
Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUGNEEDCONSENT);
//設置調試不需要Consent,此時ConsentUpdateListener方法返回的isNeedConsent參數為false
Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUGNOTNEEDCONSENT);
Kotlin
// 設置調試需要Consent,此時ConsentUpdateListener方法返回的isNeedConsent參數為true
Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUGNEEDCONSENT)
// 設置調試不需要Consent,此時ConsentUpdateListener方法返回的isNeedConsent參數為false
Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUGNOTNEEDCONSENT)
完成這些步驟后,調用更新用戶意見狀態時會根據您的調試狀態返回isNeedConsent的值。
說明
如果把設備設置為測試設備,那么會返回固定的測試廣告技術提供商列表,無法驗證真實廣告技術提供商列表變化的場景。
特別聲明:以上文章內容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關于作品內容、版權或其它問題請于作品發表后的30日內與ESG跨境電商聯系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯系在線顧問
小程序
ESG跨境小程序
手機入駐更便捷
返回頂部