首页 > 解决方案 > 无法使用 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.

标签: androidvideonativeadsmopub

解决方案


根据他们的博客,以下情况不会出现广告:

这些错误表明您的广告单元没有填充。没有广告网络会在 100% 的时间内填满,所以看到这个日志是正常的。新应用程序和容量非常低的应用程序往往会遇到较低的填充率。如果您对特定网络的填充有任何疑问,请联系您的广告网络代表。

如果您始终没有看到填充,请查看 MoPub UI 的 Networks 选项卡中的广告网络展示位置详细信息,以及网络 UI 中的设置。

如果您忘记包含网络 SDK 或适配器文件,您将无法展示来自 Certified Ad Networks 的广告。无法找到或实例化自定义事件和无法找到本机网络或自定义事件适配器日志消息指示网络 SDK 或适配器文件丢失、重命名或位于错误位置。

查看我们的集成第三方广告网络文档以解决此问题。

链接供参考。


推荐阅读