HUAWEI Ads的用户意见征求,华为ads需要打开吗-ESG跨境

HUAWEI Ads的用户意见征求,华为ads需要打开吗

来源网络
来源网络
2022-04-29
点赞icon 0
查看icon 640

HUAWEI Ads的用户意见征求,华为ads需要打开吗HUAWEI Ads的用户意见征求在法律有相应要求的情况下,您必须征得用户的同意才能使用其个人数据(例如OAID)来投放广告。HUAWEI Ads平台投放的广告包括个性化广告和非个性化广告。为了征求用户意见,HUAWEI Ads平台提供了Consent SDK。本......

HUAWEI Ads的用户意见征求,华为ads需要打开吗





HUAWEI Ads的用户意见征求

在法律有相应要求的情况下,您必须征得用户的同意才能使用其个人数据(例如OAID)来投放广告。

HUAWEI Ads平台投放的广告包括个性化广告和非个性化广告。为了征求用户意见,HUAWEI Ads平台提供了Consent SDK。

本章节介绍了如何使用Consent SDK征求用户意见,以及在征得用户意见后如何根据用户意见获取广告。

Consent SDK使用

1.集成Consent SDK。

a.在项目级build.gradle文件中配置Maven仓地址:

buildscript {

  repositories {

    google()

    jcenter()

    //配置Consent SDK的Maven仓地址

    maven { url https://developer.huawei.com/repo/ }

  }

  ...

}

allprojects {

  repositories {

    google()

    jcenter()

    //配置Consent SDK的Maven仓地址

    maven { url https://developer.huawei.com/repo/ }

  }

}

b.在应用级的build.gradle文件中添加编译依赖:

c.将{version}替换为实际的版本号,版本号索引请参见版本更新说明,修改如下:

dependencies {

  implementation com.huawei.hms:adsconsent:3.4.39.302

}

在完成以上的配置后,点击工具栏中的gradle同步图标,完成“build.gradle”文件的同步,将相关依赖下载到本地。

2.更新用户意见状态。

使用Consent SDK时,应确保Consent SDK获得的是HUAWEI Ads平台广告技术提供商的最新信息。如果在征求用户意见后,广告技术提供商的列表发生改变,则Consent SDK会自动将用户意见置为未知状态。因此在每次启动应用时都必须通过调用requestConsentUpdate()方法确定用户的意见状态。

示例代码如下所示:

Java

...

import com.huawei.hms.ads.consent.*;

...

public class ConsentActivity extends AppCompatActivity {

  ...

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    ...

    // 检查consent状态

    checkConsentStatus();

    ...

  }

  ...

  private void checkConsentStatus() {

    ...

    Consent consentInfo = Consent.getInstance(this);

    ...

    consentInfo.requestConsentUpdate(new ConsentUpdateListener() {

      @Override

      public void onSuccess(ConsentStatus consentStatus, boolean isNeedConsent, ListAdProvider adProviders) {

        // 获取用户意见状态成功

        ...

      }

      @Override

      public void onFail(String errorDescription) {

        // 获取用户意见状态失败

        ...

      }

    });

   ...

  }

  ...

}

Kotlin

...

import com.huawei.hms.ads.consent.*

...

class ConsentActivity : BaseActivity() {

  ...

  override fun onCreate(savedInstanceState: Bundle ) {

    ...

    // 检查consent状态

    checkConsentStatus()

    ...

  }

  ...

  private fun checkConsentStatus() {

    ...

    val consentInfo = Consent.getInstance(this)

    ...

    consentInfo.requestConsentUpdate(object : ConsentUpdateListener {

      override fun onSuccess(consentStatus: ConsentStatus, isNeedConsent: Boolean, adProviders: ListAdProvider) {

        // 获取用户意见状态成功

        ...

      }

      override fun onFail(errorDescription: String) {

        // 获取用户意见状态失败

        ...

      }

    })

   ...

  }

  ...

}

如果成功更新用户意见信息,那么会通过ConsentUpdateListener的onSuccess()方法提供更新后的用户意见状态参数consentStatus、是否需要Consent参数isNeedConsent和广告技术提供商的adProviders列表。

ConsentStatus具有以下三种状态:

·如果回调参数isNeedConsent取值为false,则表明可以向HUAWEI Ads SDK请求个性化广告。

·如果回调参数isNeedConsent取值为true,则表明该用户在欧洲经济区内或其他敏感地区内,需要进一步确认用户意见。

·当返回的ConsentStatus为PERSONALIZED或NONPERSONALIZED,则表明已征求过用户意见,不需要再次征求。

·当返回的ConsentStatus为UNKNOWN,则需要通过弹框等方式征求用户意见。

如果ConsentUpdateListener返回onFail()时,则直接请求非个性化广告。

AdProvider为广告技术提供商信息,参数定义如下:

说明

requestConsentUpdate()方法每次会请求网络以更新广告技术提供商列表,为了保障用户体验,媒体可以自行实现超时控制。

3.征求用户意见。

您需要通过弹框等方式向用户征求意见,并展示广告技术提供商的完整列表。以下是通过弹框征求用户意见的样例:

a.弹框征求用户意见。

示例代码如下所示:

Java

...

import com.huawei.hms.ads.consent.*;

...

public class ConsentActivity extends AppCompatActivity {

  ...

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    ...

    // 检查consent状态

    checkConsentStatus();

    ...

  }

  ...

  private void checkConsentStatus() {

    ...

    Consent consentInfo = Consent.getInstance(this);

    ...

    consentInfo.requestConsentUpdate(new ConsentUpdateListener() {

      @Override

      public void onSuccess(ConsentStatus consentStatus, boolean isNeedConsent, ListAdProvider adProviders) {

        ...

        // 此返回参数代表是否需要consent

        if (isNeedConsent) {

          // UNKNOWN状态,需要重新收集用户信息

          if (consentStatus == ConsentStatus.UNKNOWN) {

          ...

            showConsentDialog();

          }

          // 如果是PERSONALIZED或者NONPERSONALIZED状态,则不需要弹框收集用户意见

          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();

  }

}

Kotlin

...

import com.huawei.hms.ads.consent.*

...

class ConsentActivity : BaseActivity() {

  ...

  override fun onCreate(savedInstanceState: Bundle?) {

    ...

    // 检查consent状态

    checkConsentStatus()

    ...

  }

  ...

  private fun checkConsentStatus() {

    ...

    val consentInfo = Consent.getInstance(this)

    ...

    consentInfo.requestConsentUpdate(object : ConsentUpdateListener {

      override fun onSuccess(consentStatus: ConsentStatus, isNeedConsent: Boolean, adProviders: ListAdProvider) {

        ...

        // 此返回参数代表是否需要consent

        if (isNeedConsent) {

          // UNKNOWN状态,需要重新收集用户信息

          if (consentStatus == ConsentStatus.UNKNOWN) {

          ...

            showConsentDialog()

          }

          // 如果是PERSONALIZED或者NONPERSONALIZED状态,则不需要弹框收集用户意见

          else {

            ...

          }

        } else {

          ...

        }

      }

      override fun onFail(errorDescription: String) {

       // 获取用户意见状态失败

       ...

      }

    })

    ...

  }

  ...

  private fun showConsentDialog() {

    // 开始Consent弹出框处理

    val dialog = ConsentDialog(this, mAdProviders)

    dialog.setCallback(this)

    dialog.setCanceledOnTouchOutside(false)

    dialog.show()

  }

}

对话框效果图如下:

点击“here”跳转至更多信息:

b.展示广告技术提供商列表。

您需要将广告技术提供商的名称展示给用户,并提供访问广告技术提供商隐私政策的入口。

通过点击上述更多信息页面中的here链接弹出广告技术提供商列表对话框,效果如下:

c.设置用户意见。

征得用户意见后,请使用setConsentStatus()方法设置用户的选择。

示例代码如下所示:

Java

Consent.getInstance(getApplicationContext()).setConsentStatus(ConsentStatus.PERSONALIZED);

Kotlin

Consent.getInstance(getApplicationContext()).setConsentStatus(ConsentStatus.PERSONALIZED)

说明

请务必让用户可以随时更改或撤消意见,并将用户更新后的意见设置给Consent SDK。

d.设置“未达到法定承诺年龄用户”的标记。

如果您需要针对未达到法定承诺年龄的用户请求对应的广告,则在调用requestConsentUpdate()前必须通过调用setUnderAgeOfPromise设置“未达到法定承诺年龄用户”的标记。

示例代码如下所示:

Java

//设置“未达到法定承诺年龄用户”的标记

Consent.getInstance(getApplicationContext()).setUnderAgeOfPromise(true);

Kotlin

//设置“未达到法定承诺年龄用户”的标记

Consent.getInstance(getApplicationContext()).setUnderAgeOfPromise(true)

一旦将此设置为true,则每次requestConsentUpdate()请求均会回调onFail(String errorDescription)方法,并提供给用户错误描述参数errorDescription,此时不需要再展示征求用户意见弹框。设置为false表明用户已达到法定承诺年龄。

说明

当Consent SDK设置了此标记后,在请求广告时,基于受众人群请求广告中setTagForUnderAgeOfPromise的参数应与Consent参数保持一致。

4.根据用户意见获取广告。

请求广告时,默认不设置setNonPersonalizedAd方法,请求个性化广告与非个性化广告。如果用户在Consent阶段没有做出选择,则只能请求非个性化广告。

如果设置setNonPersonalizedAd方法且值为:

·ALLOWALL:个性化广告与非个性化广告

·ALLOWNONPERSONALIZED:非个性化广告

示例代码如下所示:

Java

//setNonPersonalizedAd设置为ALLOWNONPERSONALIZED时,只请求非个性化广告

RequestOptions requestOptions=HwAds.getRequestOptions();

requestOptions=requestOptions.toBuilder().setNonPersonalizedAd(ALLOWNONPERSONALIZED).build();

HwAds.setRequestOptions(requestOptions);

AdParam adParam=new AdParam.Builder().build();

adView.loadAd(adParam);

Kotlin

//setNonPersonalizedAd设置为ALLOWNONPERSONALIZED时,只请求非个性化广告

var requestOptions:RequestOptions?=HwAds.getRequestOptions()

requestOptions=requestOptions.toBuilder().setNonPersonalizedAd(ALLOWNONPERSONALIZED).build()

HwAds.setRequestOptions(requestOptions)

val adParam=AdParam.Builder().build()

adView!!.loadAd(adParam)

Consent SDK测试

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

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

示例代码如下所示:

Java

String testDeviceId=Consent.getInstance(getApplicationContext()).getTestDeviceId();

Kotlin

val testDeviceId = Consent.getInstance(getApplicationContext()).testDeviceId

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

示例代码如下所示:

Java

Consent.getInstance(getApplicationContext()).addTestDeviceId(testDeviceId);

Kotlin

Consent.getInstance(getApplicationContext()).addTestDeviceId(testDeviceId)

调用setDebugNeedConsent设置是否需要Consent。

示例代码如下所示:

Java

//设置调试需要Consent,此时ConsentUpdateListener方法返回的isNeedConsent参数为true

Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUGNEEDCONSENT);

//设置调试不需要Consent,此时ConsentUpdateListener方法返回的isNeedConsent参数为false

Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUGNOTNEEDCONSENT);

Kotlin

// 设置调试需要Consent,此时ConsentUpdateListener方法返回的isNeedConsent参数为true

Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUGNEEDCONSENT)

// 设置调试不需要Consent,此时ConsentUpdateListener方法返回的isNeedConsent参数为false

Consent.getInstance(getApplicationContext()).setDebugNeedConsent(DebugNeedConsent.DEBUGNOTNEEDCONSENT)

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

说明

如果把设备设置为测试设备,那么会返回固定的测试广告技术提供商列表,无法验证真实广告技术提供商列表变化的场景。


文章推荐
北京进口意大利二手激光器切割机报关
代理进口海外二手挖掘机报关清关一条龙服务,日本二手挖掘机报关流程
B2B做Facebook没效果,facebook b2b营销
Google Play无法为您打开吗 试试这些解决方案,google play无法开启


特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。

搜索 放大镜
韩国平台交流群
加入
韩国平台交流群
扫码进群
欧洲多平台交流群
加入
欧洲多平台交流群
扫码进群
美国卖家交流群
加入
美国卖家交流群
扫码进群
ESG跨境专属福利分享群
加入
ESG跨境专属福利分享群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
《开店大全-全球合集》
《开店大全-主流平台篇》
《开店大全-东南亚篇》
《CD平台自注册指南》
《开店大全-俄罗斯篇》
《韩国站内推广指南》
《韩国热销品预测》
《开店大全-日韩篇》
《开店大全-拉美篇》
《开店大全-欧洲篇》
通过ESG入驻平台,您将解锁
绿色通道,更高的入驻成功率
专业1v1客户经理服务
运营实操指导
运营提效资源福利
平台官方专属优惠
联系顾问

平台顾问

平台顾问 平台顾问

微信扫一扫
马上联系在线顾问

icon icon

小程序

微信小程序

ESG跨境小程序
手机入驻更便捷

icon icon

返回顶部