主頁 > 移動端開發 > 請求投放個性化廣告時,如何征得用戶同意?

請求投放個性化廣告時,如何征得用戶同意?

2022-10-18 08:27:47 移動端開發

過去,App里各種彈窗和貼片廣告不僅令用戶心煩,廣告主們也頭疼,一方面,廣撒網的廣告成本較高;另一方面,這些廣告不能精準觸達需要的用戶,直到個性化廣告的出現,才解決了這一痛點,

如今媒體廣告主們為了更精準地投放廣告,通常會收集用戶個人資料來判斷他們的特征定位、興趣愛好或近期需求等,然后在App里進行定向的廣告推送,基于有些用戶不愿意共享隱私資料來接收個性化廣告,所以App出于實作個性化廣告的目的需要收集、使用和共享用戶的個人資料,須先獲得用戶的有效同意,

HUAWEI Ads提供了征求用戶意見能力,在一些隱私比較嚴格的地區,建議發布商通過HUAWEI Ads SDK接入個性化廣告服務,將收集和使用用戶的個人資料與HUAWEI Ads共享,HUAWEI Ads有權對媒體廣告主們的隱私和資料合規性進行監督,默認情況下,向HUAWEI Ads平臺發出的廣告請求會投放個性化廣告,并根據以前收集的用戶資料篩選廣告,HUAWEI Ads平臺也支持通過配置廣告請求來投放非個性化廣告,詳情請參見《HUAWEI Ads隱私與資料安全相關政策》“個性化廣告和非個性化廣告”,

為了征求用戶意見,可以使用HUAWEI Ads平臺提供的Consent SDK,也可以使用符合IAB TCF v2.0規范的CMP,詳情請參見IAB TCF v2.0用戶同意資訊傳遞,

接下來我們就看一下如何使用Consent SDK征求用戶意見,以及在征得用戶意見后如何根據用戶意見獲取廣告,

開發步驟

在開發前需要集成HMS Core SDK和HUAWEI Ads SDK,具體步驟可參考開發檔案,

  1. 集成Consent SDK,

a. 配置Maven倉地址,

Android Studio的代碼庫配置在Gradle 插件7.0以下版本、7.0版本和7.1及以上版本有所不同,請根據您當前的Gradle 插件版本,選擇對應的配置程序,

b. 在應用級的“build.gradle”檔案中添加編譯依賴,

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

dependencies {
    implementation 'com.huawei.hms:ads-consent:3.4.54.300'
}

c. 在完成以上的配置后,點擊工具列中的gradle同步圖示,完成“build.gradle”檔案的同步,將相關依賴下載到本地,

  1. 更新用戶意見狀態,

使用Consent SDK時,應確保Consent SDK獲得的是HUAWEI Ads平臺廣告技術提供商的最新資訊,如果在征求用戶意見后,廣告技術提供商的串列發生改變,則Consent SDK會自動將用戶意見置為未知狀態,因此在每次啟動應用時都必須通過呼叫requestConsentUpdate()方法確定用戶意見狀態,示例代碼如下所示:

...
import com.huawei.hms.ads.consent.*;
...
public class ConsentActivity extends BaseActivity {
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        // 檢查用戶意見狀態
        checkConsentStatus();
        ...
    }
    ...
    private void checkConsentStatus() {
        ...
        Consent consentInfo = Consent.getInstance(this);
        ...
        consentInfo.requestConsentUpdate(new ConsentUpdateListener() {
            @Override
            public void onSuccess(ConsentStatus consentStatus, boolean isNeedConsent, List<AdProvider> adProviders) {
                // 獲取用戶意見狀態成功
                ...
            }
            @Override
            public void onFail(String errorDescription) {
                // 獲取用戶意見狀態失敗
                ...
            }
        });
       ...
    }
    ...
}

如果成功更新用戶意見資訊,那么會通過ConsentUpdateListener的onSuccess()方法提供更新后的用戶意見狀態引數ConsentStatus、isNeedConsent引數(是否需要consent)和廣告技術提供商的adProviders串列,

  1. 征求用戶意見,

您需要通過彈框等方式向用戶征求意見,并展示廣告技術提供商的完整串列,以下是通過彈框征求用戶意見的樣例:

a. 彈框征求用戶意見,

示例代碼如下所示:

...
import com.huawei.hms.ads.consent.*;
...
public class ConsentActivity extends BaseActivity {
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        // 檢查用戶意見狀態
        checkConsentStatus();
        ...
    }
    ...
    private void checkConsentStatus() {
        ...
        Consent consentInfo = Consent.getInstance(this);
        ...
        consentInfo.requestConsentUpdate(new ConsentUpdateListener() {
            @Override
            public void onSuccess(ConsentStatus consentStatus, boolean isNeedConsent, List<AdProvider> adProviders) {
                ...
                // 此回傳引數代表是否需要consent
                if (isNeedConsent) {
                    // UNKNOWN狀態,需要重新征求用戶意見
                    if (consentStatus == ConsentStatus.UNKNOWN) {
                    ...
                        showConsentDialog();
                    }
                    // 如果是PERSONALIZED或者NON_PERSONALIZED狀態,則不需要彈框征求用戶意見
                    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();
    }
}

對話框效果圖如下:

注:該頁面僅為簡單示例,具體實作需要開發者結合隱私界面自行設計UI,

點擊“here”跳轉至更多資訊:

注:該頁面僅為簡單示例,具體實作需要開發者結合隱私界面自行設計UI,

b. 展示廣告技術提供商串列,

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

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

注:該頁面僅為簡單示例,具體實作需要開發者結合隱私界面自行設計UI,

c. 設定用戶意見,

征得用戶意見后,請使用setConsentStatus()方法設定用戶的選擇,示例代碼如下所示:

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

d. 設定“未達到法定承諾年齡用戶”的標記,

如果您需要針對未達到法定承諾年齡的用戶請求對應的廣告,則在呼叫requestConsentUpdate()前必須通過呼叫setUnderAgeOfPromise設定“未達到法定承諾年齡用戶”的標記,示例代碼如下所示:

// 設定“未達到法定承諾年齡用戶”的標記
Consent.getInstance(getApplicationContext()).setUnderAgeOfPromise(true);

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

  1. 根據用戶意見獲取廣告,

請求廣告時,默認不設定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提供了可設定的除錯選項,

  1. 呼叫getTestDeviceId()獲取設備ID,

示例代碼如下所示:

String testDeviceId = Consent.getInstance(getApplicationContext()).getTestDeviceId();
  1. 使用獲取的設備ID將您的設備作為除錯設備列入允許清單,

示例代碼如下所示:

Consent.getInstance(getApplicationContext()).addTestDeviceId(testDeviceId);
  1. 呼叫setDebugNeedConsent設定是否需要Consent,

示例代碼如下所示:

// 設定除錯需要Consent,此時ConsentUpdateListener方法回傳的isNeedConsent引數為true
Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NEED_CONSENT);
// 設定除錯不需要Consent,此時ConsentUpdateListener方法回傳的isNeedConsent引數為false
Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NOT_NEED_CONSENT);

完成這些步驟后,呼叫更新用戶意見狀態時會根據您的除錯狀態回傳isNeedConsent的值,

如果您需要了解更多Consent SDK相關資訊,請查看此示例代碼,

了解更多詳情>>

訪問華為開發者聯盟官網
獲取開發指導檔案
華為移動服務開源倉庫地址:GitHub、Gitee

關注我們,第一時間了解 HMS Core 最新技術資訊~

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516480.html

標籤:其他

上一篇:請求投放個性化廣告時,如何征得用戶同意?

下一篇:使用Pillow使多行文本居中而不脫離影像

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more