Интеграция Mopub в Кордове - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь интегрировать Mopub в свое приложение Ionic / Cordova через специальный плагин. Я могу инициализировать SDK и получить рекламу, как я вижу в logcat. Просто я не могу создать вид для показа баннерной рекламы. Объявления загружены, но они не отображаются. Пожалуйста, помогите.

Вот мой класс:

package com.cordova.plugins;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaWebView;

import android.util.DisplayMetrics;
import android.view.View;
import android.util.Log;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.mopub.mobileads.MoPubErrorCode;
import com.mopub.mobileads.MoPubView;
import com.mopub.mobileads.MoPubView.BannerAdListener;
import com.mopub.common.SdkConfiguration;
import com.mopub.common.SdkInitializationListener;
import com.mopub.common.MoPub;
import com.mopub.common.logging.MoPubLog;

/**
 * This class echoes a string called from JavaScript.
 */

public class MopubMediation extends CordovaPlugin {

    private final static String TAG = "MopubMediation";
    private final static String TEST_BANNER_ID = "b195f8dd8ded45fe847ad89ed1d016da";
    private MoPubView moPubView;
    private float screenDensity = 1.0f;
    private SdkConfiguration sdkConfiguration;
    private MoPubView.MoPubAdSize adsize;

    @Override
    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
        super.initialize(cordova, webView);
    }

    private SdkInitializationListener initSdkListener() {
        return new SdkInitializationListener() {
            @Override
            public void onInitializationFinished() {
                adsize = MoPubView.MoPubAdSize.HEIGHT_50;
                moPubView = new MoPubView(cordova.getActivity());
                moPubView.setAdUnitId(TEST_BANNER_ID);
                moPubView.loadAd(adsize);
                moPubView.setBannerAdListener(new BannerAdListener() {
                    @Override
                    public void onBannerClicked(MoPubView arg0) {
                        Log.d("MoPub","Banner ad has expanded.");
                    }

                    @Override
                    public void onBannerCollapsed(MoPubView arg0) {
                        Log.d("MoPub","Banner ad has expanded.");
                    }

                    @Override
                    public void onBannerExpanded(MoPubView arg0) {
                        Log.d("MoPub","Banner ad has expanded.");
                    }

                    @Override
                    public void onBannerFailed(MoPubView arg0, MoPubErrorCode arg1) {
                        Log.d("MoPub","Banner ad failed to load with error:"+arg1);
                    }

                    @Override
                    public void onBannerLoaded(MoPubView arg0) {
                        Log.d("MoPub","Banner ad failed to load with error:$errorCode");
                    }
                });
            }
        };
     }

    @Override
    public boolean execute(final String action, final JSONArray args, final CallbackContext callbackContext)
            throws JSONException {
        if (action.equals("showAD")) {
            final String message = args.getString(0);
            this.initAd(action, args, callbackContext);
            return true;
        }
        return false;
    }

    private void initAd(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        final String id = args.getString(0);                
        Log.d(TAG, String.format("%s", id));

        cordova.getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                _initAd(id);
            }
        });
    }

    private void _initAd(String bannerID) {
        sdkConfiguration = new SdkConfiguration.Builder(TEST_BANNER_ID)
                                    .withLogLevel(MoPubLog.LogLevel.DEBUG)
                                    .withLegitimateInterestAllowed(false)
                                    .build();
        MoPub.initializeSdk(cordova.getActivity(), sdkConfiguration, initSdkListener());
    }

    @Override
    public void onDestroy() {
        moPubView.destroy();
        super.onDestroy();
    }
}
...