写点什么

请求投放个性化广告时,如何征得用户同意?

作者:HMS Core
  • 2022-10-25
    新加坡
  • 本文字数:3821 字

    阅读完需:约 13 分钟

过去,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 使用

  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 测试

为了让您能轻松地测试应用,Consent SDK 提供了可设置的调试选项。


  1. 调用getTestDeviceId()获取设备 ID。


示例代码如下所示:


String testDeviceId = Consent.getInstance(getApplicationContext()).getTestDeviceId();
复制代码


  1. 使用获取的设备 ID 将您的设备作为调试设备列入允许清单。


示例代码如下所示:


Consent.getInstance(getApplicationContext()).addTestDeviceId(testDeviceId);
复制代码


  1. 调用setDebugNeedConsent设置是否需要 Consent。


示例代码如下所示:


// 设置调试需要Consent,此时ConsentUpdateListener方法返回的isNeedConsent参数为trueConsent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NEED_CONSENT);// 设置调试不需要Consent,此时ConsentUpdateListener方法返回的isNeedConsent参数为falseConsent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NOT_NEED_CONSENT);
复制代码


完成这些步骤后,调用更新用户意见状态时会根据您的调试状态返回 isNeedConsent 的值。


如果您需要了解更多 Consent SDK 相关信息,请查看此示例代码


了解更多详情>>


访问华为开发者联盟官网


获取开发指导文档


华为移动服务开源仓库地址:GitHubGitee


关注我们,第一时间了解 HMS Core 最新技术资讯~

发布于: 刚刚阅读数: 4
用户头像

HMS Core

关注

HMS Core技术团队。 2022-06-16 加入

分享最新的技术干货,带来最全的能力应用场景,更新热门开发者圈子活动。与开发者一起,同成长,共精彩。

评论

发布
暂无评论
请求投放个性化广告时,如何征得用户同意?_广告_HMS Core_InfoQ写作社区