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

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

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

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跨境专属福利分享群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
《TikTok综合运营手册》
《TikTok短视频运营手册》
《TikTok直播运营手册》
《TikTok全球趋势报告》
《韩国节日营销指南》
《开店大全-全球合集》
《开店大全-主流平台篇》
《开店大全-东南亚篇》
《CD平台自注册指南》
《开店大全-俄罗斯篇》
通过ESG入驻平台,您将解锁
绿色通道,更高的入驻成功率
专业1v1客户经理服务
运营实操指导
运营提效资源福利
平台官方专属优惠

立即登记,定期获得更多资讯

订阅
联系顾问

平台顾问

平台顾问 平台顾问

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

icon icon

小程序

微信小程序

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

icon icon

返回顶部