過去,App里各種彈窗和貼片廣告不僅令用戶心煩,廣告主們也頭疼。一方面,廣撒網的廣告成本較高;另一方面,這些廣告不能精準觸達需要的用戶。直到個性化廣告的出現,才解決了這一痛點。 如今媒體廣告主們為了更精準地投放廣告,通常會收集用戶個人數據來判斷他們的特征定位、興趣愛好或近期需求等,然後在App里進行 ...
過去,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,具體步驟可參考開發文檔。
Consent SDK使用
- 集成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”文件的同步,將相關依賴下載到本地。
- 更新用戶意見狀態。
使用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列表。
- 征求用戶意見。
您需要通過彈框等方式向用戶征求意見,並展示廣告技術提供商的完整列表。以下是通過彈框征求用戶意見的樣例:
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”表明用戶已達到法定承諾年齡。
- 根據用戶意見獲取廣告。
請求廣告時,預設不設置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提供了可設置的調試選項。
- 調用getTestDeviceId()獲取設備ID。
示例代碼如下所示:
String testDeviceId = Consent.getInstance(getApplicationContext()).getTestDeviceId();
- 使用獲取的設備ID將您的設備作為調試設備列入允許清單。
示例代碼如下所示:
Consent.getInstance(getApplicationContext()).addTestDeviceId(testDeviceId);
- 調用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 最新技術資訊~