乐趣区

关于android:FAQ接入HMS-Core广告服务中的常见问题总结和解决方法

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 最新技术资讯~

退出移动版