过来,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参数为trueConsent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NEED_CONSENT);// 设置调试不须要Consent,此时ConsentUpdateListener办法返回的isNeedConsent参数为falseConsent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUG_NOT_NEED_CONSENT);
实现这些步骤后,调用更新用户意见状态时会依据您的调试状态返回isNeedConsent的值。
如果您须要理解更多Consent SDK相干信息,请查看此示例代码。
理解更多详情>>
拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee
关注咱们,第一工夫理解 HMS Core 最新技术资讯~