我已将AdMob插页式广告成功实现到我的应用程序中,但唯一的问题是它们不可点击。

这是我的AdMob.java类:

import android.app.Activity;

import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;

public class Admob extends AdListener{

    private Activity ctx;

    //Admob
    private InterstitialAd interstitial;
    private AdRequest adRequest;

    private String unitId;

    public static boolean fromAdmob = false;

    public Admob(Activity ctx, String unitId)
    {
        this.ctx    = ctx;
        this.unitId = unitId;

        try{
            this.interstitial = new InterstitialAd(this.ctx);
            interstitial.setAdUnitId(unitId);

            interstitial.setAdListener(this);
            adRequest = new AdRequest.Builder().build();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

    public void loadAd()
    {
        try{
            interstitial.loadAd(adRequest);
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

    @Override
    public void onAdLoaded() {
        try{
            fromAdmob = true;
            interstitial.show();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

    @Override
    public void onAdFailedToLoad(int errorCode)
    {

    }

    @Override
    public void onAdClosed() {
        fromAdmob = false;
    }

}

和MainPageActivity.java文件:

public class MainPageActivity extends Activity implements IGameListener, IEventDelegate{

    //Tags
    private static final String TAG = "bubblesMainPage";

    //Context
    public static Activity instance;

    //Media
    private MediaPlayer mp;

    //Ads
    private Admob admob;

    //TapSDK
    private Tap tap;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_page_activity);

        overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

        tr
            Tap.establish(this);
            tap = new Tap(this, "xxxx");
        }
        catch (Exception e){
            e.printStackTrace();
        }


        //Admob
        this.admob = new Admob(this, "ADMOB_ID");

        //Context
        instance = this;

        //Media
        mp = MediaPlayer.create(getApplicationContext(), R.raw.background_music);
        mp.setLooping(true);


      //Set activity properties
        try {
            requestWindowFeature(Window.FEATURE_NO_TITLE);

            getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } catch (Exception e) {
            e.printStackTrace();
        }

        //Intents & Listeners
        final Intent gamePlayActivity = new Intent(this, BubbleShooterActivity.class);
        BubbleShooterActivity.listener = this;


        //Animations
        Animation scaleUpAnim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.scale_up);
        findViewById(R.id.play_button).startAnimation(scaleUpAnim);

        //UI Events
        findViewById(R.id.play_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            startActivity(gamePlayActivity);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();


            }
        });

        findViewById(R.id.more_games_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                tap.showMoreGamesWithViewControllerAndAppID((IEventDelegate)instance);

            }
        });

    }

    /*
    Game methods - start
     */

    @Override
    public void onGameStart() {
        Log.i(TAG, "onGameStart");
    }

    @Override
    public void onLevelFailed() {

        //Level failed window
        try{
            Intent i = new Intent(this, LostActivity.class);
            startActivity(i);
        }
        catch (Exception e){
            e.printStackTrace();
        }

        Log.i(TAG, "onLevelFailed");
    }

    @Override
    public void onLevelUp() {
        Log.i(TAG, "onLevelUp");

        if(admob != null){
            runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    try{
                        admob.loadAd();
                    }
                    catch (Exception e){
                        e.printStackTrace();
                    }

                    try{
                        Intent i = new Intent(instance, WonActivity.class);
                        startActivity(i);
                    }
                    catch (Exception e){
                        e.printStackTrace();
                    }
                }
            });
        }

    }

    @Override
    public void onGameEnd() {
        Log.i(TAG, "onGameEnd");
    }

    /*
    TapSDK methods - start
     */
    @Override
    public void viewDidAppear() {
        Log.i(TAG, "TapSDK: viewDidAppear");
    }

    @Override
    public void viewDidDisappear() {
        Log.i(TAG, "TapSDK: viewDidDisappear");
    }

    @Override
    public void viewConnectFail(String s) {
        Log.i(TAG, "TapSDK: viewConnectFail " + s);
    }

    @Override
    public void conversion() {
        Log.i(TAG, "TapSDK: conversion");
    }

    @Override
    public void onOfferComplete(int score) {
        Log.i(TAG, "TapSDK: onOfferComplete " + score);
    }

    /*
    Activity methods start
     */

    @Override
    public void onBackPressed() {

        Log.i(TAG, "onBackPressed");

        try{
            Intent exitScreen = new Intent(this, ExitActivity.class);
            startActivity(exitScreen);
        }
        catch (Exception e){
            e.printStackTrace();
            Log.e(TAG, "onBackPressed: " + e.getMessage());
        }

    }

    @Override
    protected void onStart() {
        super.onStart();

        // Monitor launch times and interval from installation
        RateThisApp.onStart(this);
        // If the criteria is satisfied, "Rate this app" dialog will be shown
        RateThisApp.showRateDialogIfNeeded(this);
    }

    @Override
    protected void onResume()
    {
        super.onResume();

        if(tap != null)
            tap.onResume();

        mp.seekTo(0);
        mp.start();
    }

    @Override
    protected void onPause()
    {
        if(tap != null)
            tap.onPause();

        mp.pause();

        super.onPause();
    }

    @Override
    protected void onDestroy()
    {
        mp.stop();
        mp = null;

        if(tap != null)
            tap.onDestroy();

        super.onDestroy();
    }


}

当用户升级并按下播放按钮时,我不知道如何显示插页式广告(这将使他进入下一个级别)。 当他按下主屏幕按钮时,插页式广告就会显示出来,这将带他进入MainActivity屏幕。

有人可以帮助我使广告可点击吗? 另外,关于在每个完成的关卡之后如何添加插页式广告的建议? 当某人完成一个关卡并按下“播放”按钮时,将会出现一个插页式广告,当该广告关闭时,他应该能够播放下一个关卡。

非常感谢您的帮助!

#1楼 票数:0

若干问题:

  1. 不要从onAdLoaded调用interstitial.show() 当用户按下下一级的播放按钮时调用show() (但仅当有广告可用时)。
  2. 摆脱public static Activity instance; 永远不要持有对活动的静态引用。 您只会在各处泄漏上下文。
  3. 创建活动后,您无需admob.loadAd()onLevelUp()调用onLevelUp()调用(从网络加载广告需要花费时间)。 注意,您不需要从runOnUIThread()调用它
  4. 每次向用户显示广告后,再次调用admob.loadAd()

  ask by toofast translate from so

未解决问题?本站智能推荐:

1回复

在任何按钮上点击Admob非页内广告

如何在任何按钮上添加Admob插页式广告现在单击,它将自动工作 mainactiviti 我尝试了很多解决方案,但对我却不起作用。 请帮助我
2回复

每次按下按钮时如何显示Admob非页内广告

我是Android开发的初学者。 这是我的第一个应用程序。 我想知道每次按下按钮时如何显示Admob插页式广告。 我设法显示了一个插页式广告,但仅在第一次按下该按钮时。 但是,尝试加载广告时出现错误。 这是我的代码: 我在这里先向您的帮助表示感谢。 :)
1回复

按下按钮后立即显示admob非页内广告?

我今天改用了AdMob。 我的问题:插页式广告的加载时间非常长(最多10秒)。 我的应用程序:我有一个结果活动,用户停留了大约10秒钟。 在此Activty上有一个完成按钮,您可以通过该按钮返回MainActivty(在我的情况下为“主页”),其中的另一个完成按钮可以关闭应用程序。
2回复

在游戏中间显示Admob非页内广告

我只是像铁拳一样制作游戏,我试图在游戏结束时投放插页式广告。 但插页式广告始终会在游戏过程中展示。 我认为这会让用户感到烦恼。 而且我担心Google是否会禁止我的admob帐户。 插页式广告仅在5倍游戏结束后展示。 我只有一个屏幕MainGameView.java
1回复

AdMob非页内广告onSaveInstanceState和Serializables Parcelable遇到IOException写入可序列化对象

我在片段onSaveInstanceState中保存了一个可序列化数组。 这不会导致定期碎片破坏(例如方向更改)的问题。 但是,当我尝试显示插页式广告时,它会导致应用程序崩溃。 除了我要序列化的类名之外,堆栈跟踪没有指向代码中的ant部分。 尽管我在搜索该问题时遇到了麻烦,但我
2回复

Admob非页内广告不可点击

我创建了一个Android游戏,问题是我同时使用横幅广告和插页式广告1)玩游戏时横幅广告显示; 2)玩家最终赢得关卡但我面临的问题是插页式插页广告时显示插页广告正在显示,但无法单击它,它仅显示在级别末尾,但用户无法单击它,我尝试在周围搜索但找不到解决方案,请提供帮助这些是广告代码的原始用法在游戏
2回复

在活动的第3个开始时加载非页内广告

public class Starting extends ActionBarActivity { private final String PREFERENCE_NAME = "ad_counter_preference"; //class level variable privat
1回复

整个应用中有一个非页内广告

我有一个大约有四个片段的活动,这些片段有子片段。 我在Mainactivity中有一个带有静态InterstitialAd的静态计数器,该计数器通过片段调用,但是这会导致内存泄漏。 有更好的做法吗? 内部主 每当我需要从片段中调用它时