当前位置: 首页 > 后端技术 > Java

【FAQ】接入HMSCore广告服务常见问题汇总及解决方法

时间:2023-04-02 10:37:27 Java

HMSCore广告服务(AdsKit)为开发者提供流量变现服务和广告识别服务,依托华为终端能力,整合资源,帮助开发者获得高质量的广告内容。同时提供转化跟踪参数服务,支持第三方监测平台和广告主进行转化归因分析。下面我们分享一些开发者在接入广告服务时经常遇到的问题,希望能为遇到类似问题的开发者提供参考。1、手机竖屏转横屏时banner广告尺寸变大怎么办?解决方案:固定BannerView的宽度或高度。例如固定banner广告的高度,代码如下:"45dp"android:layout_alignParentBottom="true"android:layout_centerHorizo??ntal="true"/>Banner广告正常显示如下:2.使用示例代码测试时,原生广告不显示“为什么是这个广告”图标“i”和“不再显示这个广告图标“x”(即广告关闭按钮)呢?原因分析:为了满足本地合规的高要求,SDK增加了“做”的能力不再显示此广告”,默认显示“不再显示此广告”图标“x”。此图标仅在中国大陆以外地区发布的设备上显示,因此在在中国大陆发布的设备上进行测试参考建议:如果应用仅在非中国大陆地区上线,不影响使用。您可以使用非中国大陆地区发行的设备查看显示效果。如果应用仅在中国大陆可用,需要使用关闭按钮,建议在原生广告布局中自行实现。如果是全球上线,在自己实现关闭按钮的时候需要注意在非中国大陆地区上线后默认显示的关闭按钮是否会发生冲突。补充:在原生广告设置选项NativeAdConfiguration.Builder中设置了“不展示该广告”的功能。其提供的setRequestCustomDislikeThisAd()方法可以设置是否自定义“不展示该广告”功能。默认值为false。表现形式如下:如果设置为true,则显示“Whydidyouseethisad”的图标“i”,如下图所示:自己实现关闭按钮时,在为了避免在未在中国大陆推出的应用中出现两个关闭按钮,建议设置为true。其次,可以调用NativeAdConfiguration.Builder().setChoicesPosition(intchoicesPosition)方法设置图标显示位置。在哪里显示广告选项:3.如何一次请求多个原生广告?原生广告提供方法loadAds()同时请求多个原生广告。loadAds()请求有两个参数。除了AdParam之外,maxAdsNum是要加载的最大广告数,最大值为5。SDK返回的广告数会小于等于请求的广告数,返回的广告都是不同的。示例代码如下:nativeAdLoader.loadAds(newAdParam.Builder().build(),5);广告加载成功后,SDK会多次调用NativeAd.NativeAdLoadedListener监听器的onNativeAdLoaded()方法返回一个NativeAd对象,广告返回后调用AdListener监听器的onAdLoaded方法回调通知加载成功要求;当广告加载失败时,SDK会调用AdListener监听器的onAdFailed()方法。示例代码如下,其中“testy63txaom86”为测试专用广告位ID,App正式发布时需要修改为官方广告位ID。NativeAdLoader.Builder构建器=newNativeAdLoader.Builder(this,"testy63txaom86");NativeAdLoadernativeAdLoader=builder.setNativeAdLoadedListener(newNativeAd.NativeAdLoadedListener(){@OverridepublicvoidonNativeAdLoaded(NativeAdnativeAd){//广告加载成功的回调,多个Ad对应多个回调...}}).setAdListener(newAdListener(){@OverridepublicvoidonAdLoaded(){//所有广告返回后回调,表示所有广告返回成功...}@OverridepublicvoidonAdFailed(interrorCode){//广告加载失败回调...}}).build();nativeAdLoader.loadAds(newAdParam.Builder().build(),5);注意:在再次使用NativeAdLoader加载广告之前,请确保之前的请求已经完成。4、在app中滚动播放前贴片时,前贴片第一次播放后返回错误信息onMediaError:-1,播放前贴片时返回错误码-1再次。原因分析:当前网络不可用。前置广告播放完后没有释放,导致下次播放返回-1。解决方法:检查网络。要在targetSdkVersion28及以上的手机上允许HTTP(S)网络请求,在“AndroidManifest.xml”中做如下配置。...在InstreamMediaStateListener的onMediaCompletion()回调方法中释放前置广告,每次播放结束后需要释放。publicvoidonMediaCompletion(intplayTime){updateCountDown(playTime);removeInstream();playVideo();}privatevoidremoveInstream(){if(null!=instreamView){instreamView.onClose();instreamView.destroy();instreamContainer。removeView(instreamView);instreamContainer.setVisibility(View.GONE);instreamAds.clear();}}5。如何在中国测试非中国大陆地区的广告投放?由于国内开发者在非中国大陆地区的广告变现需求越来越多,而开发者缺乏海外测试环境,导致在国内使用官方广告位ID测试时出现无法点播广告的情况。解决方法(app发布需要12小时以上):方法一:使用海外版华为手机,连接非中国大陆地区(非美国)的VPN网络,设置国家手机到非中国大陆地区,并确保app已经在该地区上架,进行测试。方法二:注册海外开发者,使用HMSToolKit提供的CloudDebugging功能,即在远程真机上进行测试。方法三:使用“媒体服务平台”中的“广告测试服务”进行测试。详见:变现测试注:HuaweiAds在全球有四个投放点:中国、亚非拉、欧洲、俄罗斯。不同站点广告不支持跨区域请求获取广告【如果需要请求跨站广告,需要使用对应国家的网络(可以使用VPN代理),以及对应国家的移动设备国家]。各个站点对应的国家详情请参考文档>>访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:关注GitHub和Gitee了解第一时间获取HMSCore最新技术资讯~