过去,应用内各种弹窗和前置广告,不仅让用户心烦,也让广告商头疼。一方面,撒网的广告成本相对较高;另一方面,这些广告无法准确到达需要它们的用户。直到个性化广告的出现,才解决了这个痛点。如今,为了更精准地投放广告,媒体广告商通常会收集用户个人数据,以确定其特征、兴趣爱好或近期需求等,然后在App中推送有针对性的广告。由于部分用户不愿意分享隐私数据以接收个性化广告,本App需要收集、使用和分享用户的个人数据以实现个性化广告的目的,必须先征得用户的有效同意。HUAWEIAds提供征求用户意见的能力。在一些隐私要求相对严格的地区,建议发布商通过HUAWEIAdsSDK接入个性化广告服务,将用户个人数据的收集和使用共享给HUAWEIAds。HUAWEIAds有权对媒体广告主的隐私和数据合规性进行监控。默认情况下,HUAWEIAds平台的广告请求将投放个性化广告,并根据之前收集的用户数据过滤广告。HUAWEIAds平台还支持通过配置广告请求的方式投放非个性化广告。详见《HUAWEI Ads隐私与数据安全相关政策》“个性化和非个性化广告”。征求用户意见可以使用HUAWEIAds平台提供的ConsentSDK,也可以使用符合IABTCFv2.0规范的CMP。有关详细信息,请参阅IABTCFv2.0用户同意信息传递。下面我们就来看看如何使用ConsentSDK征求用户意见,征求用户意见后如何根据用户意见获取广告。开发步骤开发前需要集成HMSCoreSDK和HUAWEIAdsSDK。具体步骤请参考开发文档。ConsentSDK使用集成的ConsentSDK。A。配置Maven仓库地址。AndroidStudio的代码库配置在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”文件的同步,并将相关依赖下载到本地。更新用户意见状态。在使用ConsentSDK时,您应确保ConsentSDK从HUAWEIAds平台上的广告技术提供商处获取最新信息。如果在征求用户同意后广告技术提供商列表发生变化,ConsentSDK会自动将用户同意设置为未知状态。因此,每次启动应用程序时,必须通过调用requestConsentUpdate()方法来确定用户的同意状态。示例代码如下:...importcom.huawei.hms.ads.consent.*;...publicclassConsentActivityextendsBaseActivity{...@OverrideprotectedvoidonCreate(BundlesavedInstanceState){...//检查用户同意状态checkConsentStatus();...}...privatevoidcheckConsentStatus(){...同意consentInfo=Consent.getInstance(this);...consentInfo.requestConsentUpdate(newConsentUpdateListener(){@OverridepublicvoidonSuccess(ConsentStatusconsentStatus,booleanisNeedConsent,ListadProviders){//获取用户同意状态成功...}@OverridepublicvoidonFail(StringerrorDescription){//获取用户同意状态失败...}});...}...}如果用户同意信息更新成功,将通过onSuccess()方法提供更新后的用户同意状态参数ConsentStatus、isNeedConsent参数(是否需要同意)和广告技术提供商的adProviders列表ConsentUpdateListener的。征求用户反馈。需要通过弹框等方式征求用户意见,展示完整的广告技术提供商名单。以下是通过弹框征求用户意见的例子:弹出框征求用户意见。示例代码如下:...importcom.huawei.hms.ads.consent.*;...publicclassConsentActivityextendsBaseActivity{...@OverrideprotectedvoidonCreate(BundlesavedInstanceState){...//检查用户同意状态checkConsentStatus();...}...privatevoidcheckConsentStatus(){...同意consentInfo=Consent.getInstance(this);...consentInfo.requestConsentUpdate(newConsentUpdateListener(){@OverridepublicvoidonSuccess(ConsentStatusconsentStatus,booleanisNeedConsent,ListadProviders){...//这个返回参数表示是否需要同意if(isNeedConsent){//UNKNOWNstatus,需要再次征求用户意见征求用户意见else{...}}else{...}}@OverridepublicvoidonFail(StringerrorDescription){...}});...}...privatevoidshowConsentDialog(){//启动同意弹出窗口处理ConsentDialogdialog=newConsentDialog(this,mAdProviders);dialog.setCallback(这个);dialog.setCanceledOnTouchOutside(假);对话框显示();实现需要开发者结合隐私界面设计UI。点击“这里”跳转到更多信息:注:本页面只是简单示例,具体实现需要开发者结合隐私界面设计UI。b.显示广告技术提供商列表。您需要向用户显示广告技术提供商的名称,并提供对广告技术提供商隐私政策的访问权限。在上述更多信息页面点击此处链接,弹出广告技术提供商列表对话框,效果如下:注:本页面仅为简单示例,具体实现需要开发者结合设计UI与隐私界面。C。设置用户评论。在获得用户的同意后,使用setConsentStatus()方法设置用户的选择。示例代码如下:Consent.getInstance(getApplicationContext()).setConsentStatus(ConsentStatus.PERSONALIZED);d.设置“未达到法定同意年龄的用户”标志。如果您需要为未达到法定承诺年龄的用户请求相应的广告,您必须在调用requestConsentUpdate()之前通过调用setUnderAgeOfPromise设置“未达到法定承诺年龄的用户”标志。示例代码如下://设置标志Consent.getInstance(getApplicationContext()).setUnderAgeOfPromise(true);一旦将其设置为“true”,每个requestConsentUpdate()请求都会回调onFail(StringerrorDescription)方法,并将错误描述参数errorDescription提供给用户。这个时候就不需要显示用户评论的弹框了。设置为“false”表示用户已达到法定同意年龄。根据用户意见获取广告。请求广告时,默认不设置setNonPersonalizedAd方法,分别请求个性化广告和非个性化广告。如果用户在同意阶段没有做出选择,则只能请求非个性化广告。setNonPersonalizedAd方法的值可以设置为:?ALLOW_ALL:个性化广告和非个性化广告?ALLOW_NON_PERSONALIZED:非个性化广告示例代码如下://当setNonPersonalizedAd设置为ALLOW_NON_PERSONALIZED时,只显示非个性化广告requestedRequestOptions=HwAds.getRequestOptions();requestOptions=requestOptions.toBuilder().setNonPersonalizedAd(ALLOW_NON_PERSONALIZED).build();HwAds.setRequestOptions(requestOptions);AdParamadParam=newAdParam.Builder().build();adView。加载广告(广告参数);ConsentSDK测试为了让您轻松测试应用程序,ConsentSDK提供了可配置的调试选项。调用getTestDeviceId()获取设备ID。示例代码如下:StringtestDeviceId=Consent.getInstance(getApplicationContext()).getTestDeviceId();使用获得的设备ID将您的设备列为调试设备。示例代码如下:Consent.getInstance(getApplicationContext()).addTestDeviceId(testDeviceId);调用setDebugNeedConsent设置是否需要Consent。示例代码如下://调试需要Consent,ConsentUpdateListener方法返回的isNeedConsent参数为true。返回的isNeedConsent参数为falseConsent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NOT_NEED_CONSENT);完成这些步骤后,在调用更新用户意见状态时,会根据你的调试状态返回isNeedConsent的值。如果您需要了解有关ConsentSDK的更多信息,请查看此示例代码。更多详情>>访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:GitHub、Gitee关注我们,第一时间了解HMSCore最新技术资讯~