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