HMS Core广告服务(Ads Kit)为开发者提供流量变现服务和广告标识服务,依靠华为终端能力,整合资源,帮忙开发者获取高质量的广告内容。同时提供转化跟踪参数服务,反对三方监测平台、广告主进行转化归因剖析。上面咱们分享一些开发者在接入广告服务中常常会碰到的问题,心愿给遇到相似问题的开发者提供参考。

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

解决方案:

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

<com.huawei.hms.ads.banner.BannerView    android:id="@+id/hw_banner_view"    android:layout_width="match_parent"    android:layout_height="45dp"    android:layout_alignParentBottom="true"    android:layout_centerHorizontal="true" />

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

阐明:再次应用NativeAdLoader加载广告前,请确保先前的申请曾经实现。

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

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

起因剖析:

  1. 以后网络不可用。
  2. 贴片广告在播放实现后,没有开释,导致下次播放时返回了-1。

解决方案:

  1. 查看网络。在targetSdkVersion 28及以上的手机上容许HTTP(S)网络申请,在“AndroidManifest.xml”做以下配置。
<application    ...    android:usesCleartextTraffic="true"    >    ...</application>
  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();    }}

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

随着国内开发者在非中国大陆区域进行广告变现的需要越来越多,而开发者不足海内测试环境,导致在国内应用正式广告位ID测试时,呈现申请不到广告的状况。

解决办法(利用上架须要超过12小时):

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

办法二:注册成为海内开发者,应用HMS ToolKit提供的Cloud Debugging性能,即近程真机进行测试。

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

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

理解更多详情>>

拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee

关注咱们,第一工夫理解 HMS Core 最新技术资讯~