• 【FAQ】接入HMS Core广告服务中的常见问题总结和解决方法


    HMS Core广告服务Ads Kit)为开发者提供流量变现服务和广告标识服务,依托华为终端能力,整合资源,帮助开发者获取高质量的广告内容。同时提供转化跟踪参数服务,支持三方监测平台、广告主进行转化归因分析。下面我们分享一些开发者在接入广告服务中经常会碰到的问题,希望给遇到类似问题的开发者提供参考。

    1. 手机由竖屏转换成横屏时Banner广告尺寸变大怎么办?

    解决方案:

    固定BannerView的宽度或高度。例如下方的代码中固定了Banner广告的高度:

    • 1
    • 2
    • 3
    • 4
    • 5

    Banner广告正常显示效果如下:

    2. 使用示例代码测试时,原生广告不显示“为什么显示此广告”图标“i”和“不再显示此广告”图标“x”(即广告关闭按钮)怎么办?

    原因分析:

    为了符合本地合规的高要求,SDK增加了“不再显示此广告”的能力,且默认显示“不再显示此广告”的图标“x”。此图标只有在非中国大陆区域发行的设备上才会显示,因此在中国大陆发行的设备上测试时,是看不到的。

    参考建议:

    如果App只在非中国大陆区域上线,是不影响使用的,可以使用非中国大陆区域发行的设备查看展示效果。

    如果App只在中国大陆区域上线,需要用到关闭按钮时,建议在原生广告布局中自己实现。

    如果App是全球上线,那么在自己实现关闭按钮的同时还需要注意,App在非中国大陆区域上线后,与默认展示的关闭按钮是否会冲突。

    补充:

    “不再显示该广告”的功能是在原生广告设置选项NativeAdConfiguration.Builder中设置的,其提供的setRequestCustomDislikeThisAd()方法可以设置是否要自定义“不再显示该广告”的功能,默认为false。表现的形式如下:

    如果设置为true,则会显示“为什么看到此广告”图标“i”,也就是下图所示:

    当自己实现关闭按钮时,为了避免在非中国大陆区域上线的应用中出现两个关闭按钮,建议将其设置为true。

    其次,可以通过调用NativeAdConfiguration.Builder().setChoicesPosition(int choicesPosition)方法设置图标显示的位置。

    广告选项的展示位置:

    3. 如何一次请求多个原生广告?

    原生广告提供了一次同时请求多个原生广告的方法loadAds()。

    loadAds()请求有两个参数,除AdParam外,maxAdsNum是请求加载的最大广告数量,最大值为5。SDK返回的广告数量将会小于等于所请求的广告数量,并且返回的广告皆不相同。示例代码如下所示:

    nativeAdLoader.loadAds(new AdParam.Builder().build(), 5);

      当加载广告成功后,SDK会多次调用NativeAd.NativeAdLoadedListener监听器的onNativeAdLoaded()方法分别返回一个NativeAd对象,在广告都返回后再调用AdListener监听器的onAdLoaded方法回调通知此次请求成功;当加载广告失败后,SDK会调用AdListener监听器的onAdFailed()方法。

      示例代码如下所示,其中testy63txaom86"为测试专用的广告位ID,App正式发布时需要改为正式的广告位ID。

      NativeAdLoader.Builder builder = new NativeAdLoader.Builder(this, "testy63txaom86");
      NativeAdLoader nativeAdLoader = builder.setNativeAdLoadedListener(new NativeAd.NativeAdLoadedListener() {
          @Override
          public void onNativeAdLoaded(NativeAd nativeAd) {
              // 广告加载成功回调,多个广告对应多个回调
              ...
          }
      }).setAdListener(new AdListener() {
          @Override
          public void onAdLoaded() {
              // 广告全部返回后回调,说明所有广告返回成功
              ...
          }
          @Override
          public void onAdFailed(int errorCode) {
              // 广告加载失败回调
              ...
          }
      }).build();
      nativeAdLoader.loadAds(new AdParam.Builder().build(), 5);
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19

      说明:再次使用NativeAdLoader加载广告前,请确保先前的请求已经完成。

      4. 在应用内滚动播放贴片广告时,报错提示onMediaError : -1

      在第一次播放贴片广告完成后,再次播放时返回了错误码-1.

      原因分析:

      1. 当前网络不可用。

      2. 贴片广告在播放完成后,没有释放,导致下次播放时返回了-1。

      解决方案:

      1. 检查网络。在targetSdkVersion 28及以上的手机上允许HTTP(S)网络请求,在“AndroidManifest.xml”做以下配置。
      
          ...
      
      • 1
      • 2
      • 3
      • 4
      • 5
      1. 在InstreamMediaStateListener中的onMediaCompletion()回调方法中释放贴片广告, 每次播放完成后,都需要释放掉。
      public void onMediaCompletion(int playTime) {
          updateCountDown(playTime);
          removeInstream();
          playVideo();
      }
      private void removeInstream() {
          if (null != instreamView) {
              instreamView.onClose();
              instreamView.destroy();
              instreamContainer.removeView(instreamView);
              instreamContainer.setVisibility(View.GONE);
              instreamAds.clear();
          }
      }
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13

      5. 如何在国内测试非中国大陆区域的广告投放?

      随着国内开发者在非中国大陆区域进行广告变现的需求越来越多,而开发者缺乏海外测试环境,导致在国内使用正式广告位ID测试时,出现请求不到广告的情况。

      解决方法(应用上架需要超过12小时):

      方法一:使用海外版本的华为手机,连接非中国大陆区域的VPN网络(非美国),将手机中的国家区域设置为非中国大陆且确保应用已在该区域上架,进行测试。

      方法二:注册成为海外开发者,使用HMS ToolKit提供的Cloud Debugging功能,即远程真机进行测试。

      方法三:借助“媒体服务平台”中的“广告测试服务”进行测试。详情请查看:变现测试

      注意:华为广告在全球有四个投放站点:中国,亚非拉,欧洲,俄罗斯。不同的站点广告不支持跨区域请求获取广告【如需跨站点请求广告需使用对应国家的网络(可使用vpn代理),和对应国家的手机设备】。各个站点对应的国家详情可参考文档

      了解更多详情>>

      访问华为开发者联盟官网
      获取开发指导文档
      华为移动服务开源仓库地址:GitHubGitee

      关注我们,第一时间了解 HMS Core 最新技术资讯~

    • 相关阅读:
      Java中如何通过路径表达式找值:XPath和JsonPath以及SpEL详解及对比
      企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)
      jdbc——工具类的创建
      【Kotlin精简】第2章 集合
      【智能优化算法-战争策略算法】基于战争策略算法求解单目标优化问题附matlab代码
      剑指 Offer 61. 扑克牌中的顺子
      dev board sig技术文章:轻量系统适配ARM架构芯片平台
      测试老鸟总结,性能测试三大核心指标详解,并发/TPS/响应时间...
      时间序列预测 | Python实现Attention-Transformer时间序列预测(TSAT model)
      22.10.31补卡 22CCPC桂林C题
    • 原文地址:https://blog.csdn.net/HUAWEI_HMSCore/article/details/126848356