过来,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 最新技术资讯~
发表回复