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