android - 无法使用 Mopub 在 android 中通过手动集成实现原生视频广告
问题描述
正如Mopub的文档所说,这里集成了原生广告,然后是原生视频广告。
集成代码后,广告请求响应正在调用onNativeFail()
带有一些响应的回调方法
下面的代码与工作流和 logcat 消息有关
公共类 MainActivity 扩展 Activity {
private MoPubView moPubView;
//private MoPubInterstitial mInterstitial;
private MoPubNative moPubNative;
private MoPubNativeNetworkListener moPubNativeNetworkListener;
private NativeAd.MoPubNativeEventListener moPubNativeEventListener;
AdapterHelper adapterHelper;
private NativeFullScreenVideoView nativeFullScreenVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
moPubNativeNetworkListener = new MoPubNativeNetworkListener() {
@Override
public void onNativeLoad(NativeAd nativeAd) {
Log.d("MoPub", "Native ad has loaded.");
}
@Override
public void onNativeFail(NativeErrorCode errorCode) {
Log.d("MoPub", "Native ad failed to load with error: " + errorCode.toString());
}
};
moPubNativeEventListener = new NativeAd.MoPubNativeEventListener() {
@Override
public void onImpression(View view) {
Log.d("MoPub", "Native ad recorded an impression.");
// Impress is recorded - do what is needed AFTER the ad is visibly shown here.
}
@Override
public void onClick(View view) {
Log.d("MoPub", "Native ad recorded a click.");
// Click tracking.
}
};
moPubNative = new MoPubNative(this, "02a2d288d2674ad09f3241d46a44356e ", moPubNativeNetworkListener);
ViewBinder viewBinder = new ViewBinder.Builder(R.layout.native_ad_list_item)
.mainImageId(R.id.native_main_image)
.iconImageId(R.id.native_icon_image)
.titleId(R.id.native_title)
.textId(R.id.native_text)
.privacyInformationIconImageId(R.id.native_privacy_information_icon_image)
.build();
MediaViewBinder mediaViewBinder = new MediaViewBinder.Builder(R.layout.native_video_ad_layout)
.mediaLayoutId(R.id.native_ad_video_view)
.iconImageId(R.id.native_ad_icon_image)
.titleId(R.id.native_ad_title)
.textId(R.id.native_ad_text)
.build();
MoPubVideoNativeAdRenderer moPubVideoNativeAdRenderer = new MoPubVideoNativeAdRenderer(mediaViewBinder);
moPubNative.registerAdRenderer(moPubVideoNativeAdRenderer);
MoPubStaticNativeAdRenderer moPubStaticNativeAdRenderer = new MoPubStaticNativeAdRenderer(viewBinder);
moPubNative.registerAdRenderer(moPubStaticNativeAdRenderer);
EnumSet<RequestParameters.NativeAdAsset> desiredAssets = EnumSet.of(
RequestParameters.NativeAdAsset.TITLE,
RequestParameters.NativeAdAsset.TEXT,
RequestParameters.NativeAdAsset.CALL_TO_ACTION_TEXT,
RequestParameters.NativeAdAsset.MAIN_IMAGE,
RequestParameters.NativeAdAsset.ICON_IMAGE,
RequestParameters.NativeAdAsset.STAR_RATING
);
RequestParameters mRequestParameters = new RequestParameters.Builder()
.desiredAssets(desiredAssets)
.build();
moPubNative.makeRequest();
}
}
运行此代码后,广告未加载,我的代码响应如下
06-06 17:01:41.797 24421-24421/? I/Ads: Webview loading for native ads.
06-06 17:01:41.911 24421-24421/? I/Ads: Javascript has loaded for native ads.
06-06 17:02:18.623 24421-24421/? I/Ads: Webview loading for native ads.
06-06 17:02:18.954 24421-24421/? I/Ads: Javascript has loaded for native ads.
06-06 17:02:51.796 13278-13278/com.fabgrad.students.android D/MoPub: Native ad request failed.
com.mopub.network.MoPubNetworkError: No ads found for ad unit.
at com.mopub.network.AdRequest.parseNetworkResponse(AdRequest.java:180)
at com.mopub.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:132)
at com.mopub.volley.NetworkDispatcher.run(NetworkDispatcher.java:87)
06-06 17:02:51.800 13278-13278/com.fabgrad.students.android D/MoPub: Native ad failed to load with error: Server returned empty response.
解决方案
根据他们的博客,以下情况不会出现广告:
这些错误表明您的广告单元没有填充。没有广告网络会在 100% 的时间内填满,所以看到这个日志是正常的。新应用程序和容量非常低的应用程序往往会遇到较低的填充率。如果您对特定网络的填充有任何疑问,请联系您的广告网络代表。
如果您始终没有看到填充,请查看 MoPub UI 的 Networks 选项卡中的广告网络展示位置详细信息,以及网络 UI 中的设置。
如果您忘记包含网络 SDK 或适配器文件,您将无法展示来自 Certified Ad Networks 的广告。无法找到或实例化自定义事件和无法找到本机网络或自定义事件适配器日志消息指示网络 SDK 或适配器文件丢失、重命名或位于错误位置。
查看我们的集成第三方广告网络文档以解决此问题。
链接供参考。
推荐阅读
- sql - EF Core 3.1 - 数据库优先和继承
- laravel - 具有许多内部连接的最慢查询使其更快 postgres
- javascript - 从 localStorage 中检索对象适用于控制台日志,但不适用于页面
- azure-devops - Azure DevOps 添加概述
- image - 在 Bootstrap Carousel 中为图像设置相等的高度
- r - names_to '.value' 约定如何适用于 pivot_longer 中每行的多个观察值?
- terraform - 如何将基于 Terraform 的软件添加到 IBM Cloud 的私有目录?
- reactjs - TypeError:null 不是对象(评估'_RNGestureHandlerModule.default.Direction')
- terraform - Terraform:启动单个功能,无需在每个文件夹中复制提供程序文件
- c# - 如何在 C# 中将 HTML 字符串转换为 XHTML?