如何预加载AdMob插页式广告并使用意图发送到另一个Android活动

ali*_*bas 5 android interstitial admob android-intent

我需要一些有关AdMob插页式广告的帮助.

我想在一个活动中预加载插页式广告.这是直截了当的.

// Create an ad.
        interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId(AD_UNIT_ID);

        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .addTestDevice(TEST_DEVICE_ID).build();

        // Load the interstitial ad.
        interstitialAd.loadAd(adRequest);
Run Code Online (Sandbox Code Playgroud)

现在,我想使用intent将插页式广告发送到另一个活动.我不知道如何使用它

intent.putExtra("myAd", interstitialAd);
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Tim*_*Tim 15

插页式广告并不意味着或构建为使用意图的附加内容传递.

它更好

  • 在下一个活动中重新创建并重新加载广告
  • 制作一个包含广告插播广告的额外公共类,将其放在活动A中,然后在活动B中从中检索

第二种情况的例子(半伪代码):

public class AdManager {
    // Static fields are shared between all instances.
    static InterstitialAd ad;
    private Context ctx;

    public AdManager(Context ctx) {
        this.ctx = ctx;
        createAd();
    }

    public void createAd() {
        // Create an ad.
        ad = new InterstitialAd(ctx);
        ad.setAdUnitId(AD_UNIT_ID);

        final AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .addTestDevice(TEST_DEVICE_ID).build();

        // Load the interstitial ad.
        ad.loadAd(adRequest);
    }

    public InterstitialAd getAd() {
        return ad;
    }
}
Run Code Online (Sandbox Code Playgroud)

运用

活动A.

AdManager adManager = new AdManager();
adManager.createAd();
Run Code Online (Sandbox Code Playgroud)

活动B.

AdManager adManager = new AdManager();
InterstitialAd ad = adManager.getAd();
if (ad.isLoaded()) {
    ad.show();
}
Run Code Online (Sandbox Code Playgroud)


Kir*_*own 5

通过使用单例设计模式解决了此问题。

/**
* Created by Kirk on 10/26/2017.
*/

public class AdManager {

private static AdManager singleton;

public AdManager() {
}

/***
 * returns an instance of this class. if singleton is null create an instance
 * else return  the current instance
 * @return
 */
public static AdManager getInstance() {
    if (singleton == null) {
        singleton = new AdManager();
    }

    return singleton;
}

/***
 * Create an interstitial ad
 * @param context
 */
public static void createAd(Context context) {
    interstitialAd = new InterstitialAd(context);
    interstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
    interstitialAd.loadAd(new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build());
}

/***
 * get an interstitial Ad
 * @return
 */
public static InterstitialAd getAd() {
    return interstitialAd;
}
Run Code Online (Sandbox Code Playgroud)

}

在activityA中创建一个加载广告

    AdManager adManager = AdManager.getInstance();
    adManager.createAd(MainActivity.this);
Run Code Online (Sandbox Code Playgroud)

在活动B中搜索并通过以下方式展示广告

    AdManager adManager = AdManager.getInstance();
    InterstitialAd ad =  adManager.getAd();

    if (ad.isLoaded()) {
        ad.show();
    }
Run Code Online (Sandbox Code Playgroud)