HUAWEI Ads的用戶意見(jiàn)征求

來(lái)源: 華為開(kāi)發(fā)者聯(lián)盟官網(wǎng)
作者:華為開(kāi)發(fā)者聯(lián)盟官網(wǎng)
時(shí)間:2021-03-18
16727
在法律有相應(yīng)要求的情況下,您必須征得用戶的同意才能使用其個(gè)人數(shù)據(jù)(例如OAID)來(lái)投放廣告。

blur_close_up_collage_computer_desk_fingers_focus_glass-1364543.jpg

在法律有相應(yīng)要求的情況下,您必須征得用戶的同意才能使用其個(gè)人數(shù)據(jù)(例如OAID)來(lái)投放廣告。

HUAWEI Ads平臺(tái)投放的廣告包括個(gè)性化廣告和非個(gè)性化廣告。為了征求用戶意見(jiàn),HUAWEI Ads平臺(tái)提供了Consent SDK。

本章節(jié)介紹了如何使用Consent SDK征求用戶意見(jiàn),以及在征得用戶意見(jiàn)后如何根據(jù)用戶意見(jiàn)獲取廣告。

Consent SDK使用

1.集成Consent SDK。

a.在項(xiàng)目級(jí)build.gradle文件中配置Maven倉(cāng)地址:

0000000000011111111.20210226154817.86546324984892819120108699812625_50520226081251_2800_C8640261C7648D51482534412C798B842DAD2F2D81183CA6E9F160ED91586166.png

buildscript {

    repositories {

        google()

        jcenter()

        //配置Consent SDK的Maven倉(cāng)地址

        maven { url 'https://developer.huawei.com/repo/' }

    }

    ...

}

allprojects {

    repositories {

        google()

        jcenter()

        //配置Consent SDK的Maven倉(cāng)地址

        maven { url 'https://developer.huawei.com/repo/' }

    }

}

b.在應(yīng)用級(jí)的build.gradle文件中添加編譯依賴:

0000000000011111111.20210226154817.77969050697499379156289434373146_50520226081251_2800_978B6CCA485E5AD7EEDE9793B5FB0C0A92C6702D499C26F7EB7365456CB23C59.png

c.將{version}替換為實(shí)際的版本號(hào),版本號(hào)索引請(qǐng)參見(jiàn)版本更新說(shuō)明,修改如下:

dependencies {

    implementation 'com.huawei.hms:ads-consent:3.4.39.302'

}

在完成以上的配置后,點(diǎn)擊工具欄中的gradle同步圖標(biāo),完成“build.gradle”文件的同步,將相關(guān)依賴下載到本地。

0000000000011111111.20210226154817.20819291857861571470405714617292_50520226081251_2800_46E8E5B6311F63971D3395CDF036CA7BF6C93C5C9F8E1850B71D9E3559BE4879.png

2.更新用戶意見(jiàn)狀態(tài)。

使用Consent SDK時(shí),應(yīng)確保Consent SDK獲得的是HUAWEI Ads平臺(tái)廣告技術(shù)提供商的最新信息。如果在征求用戶意見(jiàn)后,廣告技術(shù)提供商的列表發(fā)生改變,則Consent SDK會(huì)自動(dòng)將用戶意見(jiàn)置為未知狀態(tài)。因此在每次啟動(dòng)應(yīng)用時(shí)都必須通過(guò)調(diào)用requestConsentUpdate()方法確定用戶的意見(jiàn)狀態(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, List<AdProvider> adProviders) {

                // 獲取用戶意見(jiàn)狀態(tài)成功

                ...

            }

            @Override

            public void onFail(String errorDescription) {

                // 獲取用戶意見(jiàn)狀態(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: List<AdProvider>) {

                // 獲取用戶意見(jiàn)狀態(tài)成功

                ...

            }

            override fun onFail(errorDescription: String) {

                // 獲取用戶意見(jiàn)狀態(tài)失敗

                ...

            }

        })

       ...

    }

    ...

}

如果成功更新用戶意見(jiàn)信息,那么會(huì)通過(guò)ConsentUpdateListener的onSuccess()方法提供更新后的用戶意見(jiàn)狀態(tài)參數(shù)consentStatus、是否需要Consent參數(shù)isNeedConsent和廣告技術(shù)提供商的adProviders列表。

ConsentStatus具有以下三種狀態(tài):

1616055676(1).png

·如果回調(diào)參數(shù)isNeedConsent取值為false,則表明可以向HUAWEI Ads SDK請(qǐng)求個(gè)性化廣告。

·如果回調(diào)參數(shù)isNeedConsent取值為true,則表明該用戶在歐洲經(jīng)濟(jì)區(qū)內(nèi)或其他敏感地區(qū)內(nèi),需要進(jìn)一步確認(rèn)用戶意見(jiàn)。

·當(dāng)返回的ConsentStatus為PERSONALIZED或NON_PERSONALIZED,則表明已征求過(guò)用戶意見(jiàn),不需要再次征求。

·當(dāng)返回的ConsentStatus為UNKNOWN,則需要通過(guò)彈框等方式征求用戶意見(jiàn)。

如果ConsentUpdateListener返回onFail()時(shí),則直接請(qǐng)求非個(gè)性化廣告。

AdProvider為廣告技術(shù)提供商信息,參數(shù)定義如下:

1616055721(1).png

說(shuō)明

requestConsentUpdate()方法每次會(huì)請(qǐng)求網(wǎng)絡(luò)以更新廣告技術(shù)提供商列表,為了保障用戶體驗(yàn),媒體可以自行實(shí)現(xiàn)超時(shí)控制。

3.征求用戶意見(jiàn)。

您需要通過(guò)彈框等方式向用戶征求意見(jiàn),并展示廣告技術(shù)提供商的完整列表。以下是通過(guò)彈框征求用戶意見(jiàn)的樣例:

a.彈框征求用戶意見(jiàn)。

示例代碼如下所示:

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, List<AdProvider> adProviders) {

                ...

                // 此返回參數(shù)代表是否需要consent

                if (isNeedConsent) {

                    // UNKNOWN狀態(tài),需要重新收集用戶信息

                    if (consentStatus == ConsentStatus.UNKNOWN) {

                    ...

                        showConsentDialog();

                    }

                    // 如果是PERSONALIZED或者NON_PERSONALIZED狀態(tài),則不需要彈框收集用戶意見(jiàn)

                    else {

                        ...

                    }

                } else {

                    ...

                }

            }

            @Override

            public void onFail(String errorDescription) {

               ...

            }

        });

        ...

    }

    ...

    private void showConsentDialog() {

        // 開(kāi)始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: List<AdProvider>) {

                ...

                // 此返回參數(shù)代表是否需要consent

                if (isNeedConsent) {

                    // UNKNOWN狀態(tài),需要重新收集用戶信息

                    if (consentStatus == ConsentStatus.UNKNOWN) {

                    ...

                        showConsentDialog()

                    }

                    // 如果是PERSONALIZED或者NON_PERSONALIZED狀態(tài),則不需要彈框收集用戶意見(jiàn)

                    else {

                        ...

                    }

                } else {

                    ...

                }

            }

            override fun onFail(errorDescription: String) { 

               // 獲取用戶意見(jiàn)狀態(tài)失敗  

               ...

            }

        })

        ...

    }

    ...

    private fun showConsentDialog() {

        // 開(kāi)始Consent彈出框處理

        val dialog = ConsentDialog(this, mAdProviders)

        dialog.setCallback(this)

        dialog.setCanceledOnTouchOutside(false)

        dialog.show()

    }

}

對(duì)話框效果圖如下:

0000000000011111111.20210226154817.81602677553841542040625829546713_50520226081251_2800_DEA8B6F8ABCE25C310FAE3CAAC78C9D9D9A7215CD1DCE425E71F2FF231C00500.jpg

點(diǎn)擊“here”跳轉(zhuǎn)至更多信息:

0000000000011111111.20210226154817.29156432761294611889723126151278_50520226081251_2800_9BD143680763FF7164D0363CC1441BD7DB19F4E523C61968E70EC2755DA13218.jpg

b.展示廣告技術(shù)提供商列表。

您需要將廣告技術(shù)提供商的名稱展示給用戶,并提供訪問(wèn)廣告技術(shù)提供商隱私政策的入口。

通過(guò)點(diǎn)擊上述更多信息頁(yè)面中的here鏈接彈出廣告技術(shù)提供商列表對(duì)話框,效果如下:

0000000000011111111.20210226154818.33454352897301477436542158523610_50520226081251_2800_AC1403C503F3F8C3BB03FA4E713B31551AE981DAB4AE35EE32886FBA376EF2EF.jpg

c.設(shè)置用戶意見(jiàn)。

征得用戶意見(jiàn)后,請(qǐng)使用setConsentStatus()方法設(shè)置用戶的選擇。

示例代碼如下所示:

Java

Consent.getInstance(getApplicationContext()).setConsentStatus(ConsentStatus.PERSONALIZED);

Kotlin

Consent.getInstance(getApplicationContext()).setConsentStatus(ConsentStatus.PERSONALIZED)

說(shuō)明

請(qǐng)務(wù)必讓用戶可以隨時(shí)更改或撤消意見(jiàn),并將用戶更新后的意見(jiàn)設(shè)置給Consent SDK。

d.設(shè)置“未達(dá)到法定承諾年齡用戶”的標(biāo)記。

如果您需要針對(duì)未達(dá)到法定承諾年齡的用戶請(qǐng)求對(duì)應(yīng)的廣告,則在調(diào)用requestConsentUpdate()前必須通過(guò)調(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()請(qǐng)求均會(huì)回調(diào)onFail(String errorDescription)方法,并提供給用戶錯(cuò)誤描述參數(shù)errorDescription,此時(shí)不需要再展示征求用戶意見(jiàn)彈框。設(shè)置為false表明用戶已達(dá)到法定承諾年齡。

說(shuō)明

當(dāng)Consent SDK設(shè)置了此標(biāo)記后,在請(qǐng)求廣告時(shí),基于受眾人群請(qǐng)求廣告中setTagForUnderAgeOfPromise的參數(shù)應(yīng)與Consent參數(shù)保持一致。

4.根據(jù)用戶意見(jiàn)獲取廣告。

請(qǐng)求廣告時(shí),默認(rèn)不設(shè)置setNonPersonalizedAd方法,請(qǐng)求個(gè)性化廣告與非個(gè)性化廣告。如果用戶在Consent階段沒(méi)有做出選擇,則只能請(qǐng)求非個(gè)性化廣告。

如果設(shè)置setNonPersonalizedAd方法且值為:

·ALLOW_ALL:個(gè)性化廣告與非個(gè)性化廣告

·ALLOW_NON_PERSONALIZED:非個(gè)性化廣告

示例代碼如下所示:

Java

//setNonPersonalizedAd設(shè)置為ALLOW_NON_PERSONALIZED時(shí),只請(qǐng)求非個(gè)性化廣告

RequestOptions requestOptions=HwAds.getRequestOptions();

requestOptions=requestOptions.toBuilder().setNonPersonalizedAd(ALLOW_NON_PERSONALIZED).build();

HwAds.setRequestOptions(requestOptions);

AdParam adParam=new AdParam.Builder().build();

adView.loadAd(adParam);

Kotlin

//setNonPersonalizedAd設(shè)置為ALLOW_NON_PERSONALIZED時(shí),只請(qǐng)求非個(gè)性化廣告

var requestOptions:RequestOptions?=HwAds.getRequestOptions()

requestOptions=requestOptions.toBuilder().setNonPersonalizedAd(ALLOW_NON_PERSONALIZED).build()

HwAds.setRequestOptions(requestOptions)

val adParam=AdParam.Builder().build()

adView!!.loadAd(adParam)

Consent SDK測(cè)試

為了讓您能輕松地測(cè)試應(yīng)用,Consent SDK提供了可設(shè)置的調(diào)試選項(xiàng)。

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,此時(shí)ConsentUpdateListener方法返回的isNeedConsent參數(shù)為true

Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NEED_CONSENT);

//設(shè)置調(diào)試不需要Consent,此時(shí)ConsentUpdateListener方法返回的isNeedConsent參數(shù)為false

Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NOT_NEED_CONSENT);

Kotlin

// 設(shè)置調(diào)試需要Consent,此時(shí)ConsentUpdateListener方法返回的isNeedConsent參數(shù)為true

Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NEED_CONSENT)

// 設(shè)置調(diào)試不需要Consent,此時(shí)ConsentUpdateListener方法返回的isNeedConsent參數(shù)為false

Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NOT_NEED_CONSENT)

完成這些步驟后,調(diào)用更新用戶意見(jiàn)狀態(tài)時(shí)會(huì)根據(jù)您的調(diào)試狀態(tài)返回isNeedConsent的值。

說(shuō)明

如果把設(shè)備設(shè)置為測(cè)試設(shè)備,那么會(huì)返回固定的測(cè)試廣告技術(shù)提供商列表,無(wú)法驗(yàn)證真實(shí)廣告技術(shù)提供商列表變化的場(chǎng)景。

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于華為開(kāi)發(fā)者聯(lián)盟官網(wǎng),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
小游戲,大買賣 | HUAWEI Ads助力廣告主突破中東非市場(chǎng)
小游戲,大買賣 | HUAWEI Ads助力廣告主突破中東非市場(chǎng)
目前,中東非游戲市場(chǎng)種類和數(shù)量繁多,其中射擊、經(jīng)營(yíng)、跑酷、消除、解密等休閑類小游戲深受大眾喜歡,這些游戲有著玩法簡(jiǎn)單、容易上手、時(shí)間碎片化、廣告能變現(xiàn)等特點(diǎn)。市場(chǎng)潛力巨大。
HUAWEI Ads
中東
2022-08-022022-08-02
HUAWEI Ads智能客服上線啦
HUAWEI Ads智能客服上線啦
HUAWEI Ads智能客服上線啦,有什么問(wèn)題都可以解答。
HUAWEI Ads
2022-04-062022-04-06
Meta AI嘗試解決維基百科人物傳記所存在的性別偏見(jiàn)問(wèn)題
Meta AI嘗試解決維基百科人物傳記所存在的性別偏見(jiàn)問(wèn)題
Meta研究人員創(chuàng)建人工智能系統(tǒng),來(lái)編寫出維基百科風(fēng)格的傳記草稿,使得維基百科編輯能夠以最少的編輯,在維基百科上提供女性人物的傳記,以補(bǔ)充目前維基百科上,男女性人物傳記數(shù)量失衡的狀況。
AI
Meta
2022-04-022022-04-02
海外廣告業(yè)務(wù)合規(guī)化,HUAWEI Ads通過(guò)IAB歐洲透明度和同意框架CMP認(rèn)證
海外廣告業(yè)務(wù)合規(guī)化,HUAWEI Ads通過(guò)IAB歐洲透明度和同意框架CMP認(rèn)證
繼HUAWEI Ads平臺(tái)于2020年加入TCF v2.0的全球供應(yīng)商列表(Global Vendor List,供應(yīng)商ID856)積極推動(dòng)程序化廣告生態(tài)鏈標(biāo)準(zhǔn)化建設(shè)之后,2022年3月,HUAWEI Ads順利通過(guò)IAB歐洲透明度和同意框架CMP認(rèn)證(CMP ID 386),成為國(guó)內(nèi)首家具備在海外市場(chǎng)提供CMP服務(wù)的廣告平臺(tái)。
HUAWEI Ads
廣告行業(yè)
2022-03-282022-03-28
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家