HUAWEI Ads高級設置

來源: 華為開發(fā)者聯(lián)盟官網(wǎng)
作者:華為開發(fā)者聯(lián)盟官網(wǎng)
時間:2020-12-21
17397
HUAWEI Ads SDK還提供了一些廣告請求相關的高級設置。

HUAWEI Ads SDK還提供了一些廣告請求相關的高級設置。

設置受眾人群

HUAWEI Ads SDK提供了通過設置RequestOptions對象,來滿足針對不同受眾人群請求對應廣告內(nèi)容的能力。該對象應先通過HwAds靜態(tài)方法獲取應用的全局受眾人群信息。如果要更新請求配置,請從現(xiàn)有配置中獲取構建器,再進行設置更新。

說明

您必須將用戶是否是兒童的標識在setTagForChildProtection方法中如實的告知HUAWEI Ads。您需要承擔由于告知錯誤或沒有告知導致廣告誤投放到兒童的手機上導致的一切后果。

示例代碼如下:

//添加面向兒童的設置

RequestOptions requestOptions=HwAds.getRequestOptions().toBuilder().setTagForChildProtection(TAG_FOR_CHILD_PROTECTION_TRUE).build();

HwAds.setRequestOptions(requestOptions);

RequestOptions提供了下面五種方法設置受眾人群:

1608521748(1).png

1608521771(1).png

示例代碼如下:

//面向兒童的設置,表明您的廣告內(nèi)容需要符合COPPA的規(guī)定

RequestOptions requestOptions=HwAds.getRequestOptions().toBuilder().setTagForChildProtection(TAG_FOR_CHILD_PROTECTION_TRUE).build();

//未達到法定承諾年齡的用戶的設置,表明您希望廣告請求符合未達到法定承諾年齡用戶的廣告標準

RequestOptions requestOptions=HwAds.getRequestOptions().toBuilder().setTagForUnderAgeOfPromise(PROMISE_TRUE).build();

//廣告內(nèi)容過濾,指定返回的廣告內(nèi)容應與分級標簽名稱對應,但不得高于W

RequestOptions requestOptions=HwAds.getRequestOptions().toBuilder().setAdContentClassification(AD_CONTENT_CLASSIFICATION_W).build();

//請求個性化廣告與非個性化廣告

RequestOptions requestOptions=HwAds.getRequestOptions();

requestOptions.toBuilder().setNonPersonalizedAd(ALLOW_ALL).build();

//設置TCF2.0用戶同意信息字符串

RequestOptions requestOptions=HwAds.getRequestOptions();

requestOptions.toBuilder().setConsent("tcfString").build();

設置意見征求

HUAWEI Ads投放的廣告包括個性化廣告和非個性化廣告。為了征求用戶意見,HUAWEI Ads提供了Consent SDK。

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

Consent SDK使用

1.導入Consent SDK。

在項目級build.gradle文件中配置Maven倉地址:

0000000000011111111.20201218152015.72410872342657329999920532145776_50511218072453_2800_26795517A7FD2A34FA55F4A91BD83F8D47FD3A36FAD1C749A87D9BC8DA5DC120.png

buildscript {

    repositories {

        google()

        jcenter()

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

    }

    ...

}

allprojects {

    repositories {

        google()

        jcenter()

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

    }

}

在應用級的build.gradle文件中添加編譯依賴:

0000000000011111111.20201218152015.54850895911063840719147791092426_50511218072453_2800_3ECEAEDF194640C3507B46A9C1420C1EF413CA59194493356073A44279D2C8E5.png

將{version}替換為實際的版本號,版本號索引請參見版本更新說明,修改如下:

dependencies{

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

}

保存build.gradle文件,點擊“Sync Now”等待同步完成。

0000000000011111111.20201218152015.52072064149238168138512934100146_50511218072453_2800_AF8C1F6C714EABC07D4C634DC4745CF54B78744E86292450D22E07C1152E5B3D.png

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

使用Consent SDK時,都應確保Consent SDK獲得的是HUAWEI Ads廣告技術提供商的最新信息。如果在征求用戶意見后,廣告技術提供商的列表發(fā)生改變,則Consent SDK會自動將用戶意見置為未知狀態(tài)。因此在每次啟動應用時都必須通過調(diào)用requestConsentUpdate()方法確定用戶的意見狀態(tài)。

示例代碼如下:

...

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) {

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

                ...

            }

            @Override

            public void onFail(String errorDescription) {

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

                ...

            }

        });

       ...

    }

    ...

}

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

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

1608521941(1).png

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

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

·當返回的ConsentStatus為PERSONALIZED或NON_PERSONALIZED,則表明已征求過用戶意見,不需要再次征求。

·當返回的ConsentStatus為UNKNOWN,則需要通過彈框等方式征求用戶意見。

·如果ConsentUpdateListener返回onFail()時,則直接請求非個性化廣告。

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

1608521983(1).png

說明

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

3.征求用戶意見。

您需要通過彈框等方式向用戶征求意見,并展示廣告技術提供商的完整列表。

以下是通過彈框征求用戶意見的樣例:

a.彈框征求用戶意見。

示例代碼如下:

...

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),則不需要彈框收集用戶意見

                    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();

    }

}

對話框效果圖如下:

0000000000011111111.20201218152015.55249150022846873283513296960063_50511218072453_2800_2971772C250EC49E8908AB48F039DFBFF44DFCD5DFC8850F0554F7C898EDA6F1.jpg

“here”后,頁面跳轉至更多信息頁面:

0000000000011111111.20201218152015.85770851443850763568919603365867_50511218072453_2800_F7FE482C9AFE46866FC7305DD5531259BE307EA36B3F271ABFD194A00315F753.jpg

b.展示廣告技術提供商列表。

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

通過點擊上述更多信息頁面中的here鏈接彈出廣告技術提供商列表對話框,效果如下:

0000000000011111111.20201218152015.06153074793309657042136124560124_50511218072453_2800_0B746D7B558ACEB8AB251096E5E8D5DF57F2B827D998E1935FCE3E310B0337C0.jpg

c.設置用戶意見。

征得用戶意見后,請使用setConsentStatus()方法設置用戶的選擇。

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

說明

請務必讓用戶可以隨時更改或撤消意見,并將用戶更新后的意見設置給Consent SDK。

d.(可選)未達到法定承諾年齡的用戶。

如果您需要針對未達到法定承諾年齡的用戶請求對應的廣告,則在調(diào)用requestConsentUpdate()前必須通過調(diào)用setUnderAgeOfPromise設置是否“未達到法定承諾年齡用戶”的標記。

//設置“未達到法定承諾年齡用戶”的標記

Consent.getInstance(getApplicationContext()).setUnderAgeOfPromise(true);

一旦將此設置為true,則每次requestConsentUpdate()請求均會回調(diào)onFail(String errorDescription)方法,并提供給用戶錯誤描述參數(shù)errorDescription,此時不需要再展示征求用戶意見彈框。設置為false表明用戶已達到法定承諾年齡。

說明

當Consent SDK設置了此標記后,在請求廣告時,設置受眾人群中setTagForUnderAgeOfPromise的參數(shù)應與Consent參數(shù)保持一致。

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

請求廣告時,默認不設置setNonPersonalizedAd方法,請求個性化廣告與非個性化廣告。如果用戶在Consent階段沒有做出選擇,則只能請求非個性化廣告。

如果設置setNonPersonalizedAd方法且值為:

·ALLOW_ALL:個性化廣告與非個性化廣告

·ALLOW_NON_PERSONALIZED:非個性化廣告

示例代碼如下:

//setNonPersonalizedAd設置為ALLOW_NON_PERSONALIZED時,只請求非個性化廣告

RequestOptions requestOptions=HwAds.getRequestOptions();

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

HwAds.setRequestOptions(requestOptions);

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

adView.loadAd(adParam);

Consent SDK測試

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

1.調(diào)用getTestDeviceId()獲取設備ID。

String testDeviceId=Consent.getInstance(getApplicationContext()).getTestDeviceId();

2.使用獲取的設備ID將您的設備作為調(diào)試設備列入允許清單。

Consent.getInstance(getApplicationContext()).addTestDeviceId(testDeviceId);

3.調(diào)用setDebugNeedConsent設置是否需要Consent。

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

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

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

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

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

說明

如果把設備設置為測試設備,那么會返回固定的測試廣告技術提供商列表,無法驗證真實廣告技術提供商列表變化的場景。

立即登錄,閱讀全文
版權說明:
本文內(nèi)容來自于華為開發(fā)者聯(lián)盟官網(wǎng),本站不擁有所有權,不承擔相關法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家