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。
解决方案:
- 查看网络。在targetSdkVersion 28及以上的手机上容许HTTP(S)网络申请,在“AndroidManifest.xml”做以下配置。
<application ... android:usesCleartextTraffic="true" > ...</application>
- 在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 最新技术资讯~