当前位置: 首页 > 知识库问答 >
问题:

AdMob间隙广告不可点击

宁浩博
2023-03-14

我成功地在我的应用程序中实现了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();
    }


}

我不知道当用户升级并按下播放按钮(这将引导他进入下一个级别)时,该如何显示间隙广告。当他按下home键时,间隙广告就会出现,这会把他带到MainActivity屏幕上。

有人能帮我把广告点击一下吗?另外,有什么建议,如何添加的间隙广告后,每一个完成的关卡?当某人完成一个关卡并按下播放按钮时,会出现一个间隙广告,当该广告关闭时,他应该可以播放下一个关卡。

我真的很感谢你的帮助!

共有1个答案

齐英耀
2023-03-14

若干问题:

  1. 不要从onadload调用interstitial.show()。当用户按下“播放”按钮进入下一个级别时,调用show()(但仅当广告可用时)。
  2. 删除公共静态activity实例;从不持有对activity的静态引用。您只会到处泄漏上下文。
  3. 不要从onlevelup()调用admob.loadad(),只要创建了activity就调用它(从网络加载广告需要时间)。NB您不需要从runonuithread()
  4. 调用它
  5. 每次向用户显示广告后,再次调用AdMob.LoadAd()
 类似资料:
  • 嗨,伙计们,我的广告插页有问题。我在主活动中有一个横幅,但在另一个活动中,我想显示一个插页广告。横幅可以。。。我能看到这个!但间隙并没有显示。。。这是我的代码: } 我的UnitID是正确的:有一个logcat。 我在4.4.2中使用了模拟器,但我在物理设备上进行了尝试,但没有在中间位置使用广告,但在主活动中使用了小横幅! 我有GooglePlayService库...我的应用程序使用google

  • 我正在遵循本教程 到目前为止,当我点击按钮时,它就可以工作了。然而,我似乎无法让它在viewDidLoad上显示中间广告。 这就是我所拥有的: 控制台不断向我显示: 2016-02-04 22:27:51.855 GoogleAdamObjutorial[3394:56415]要获取此设备上的测试广告,请致电:request。testDevices=@[kGADSimulatorID]; 单击按钮

  • 在这个图像中有8个按钮。现在我在这个应用程序上使用测试广告单元。这个活动我有8个按钮,每个按钮都与有针对性的活动相联系。我的问题是,当我单击这8个按钮中的任何按钮时,它会显示admob插播广告并发送到目标活动,但当我关闭目标活动并再次返回main_activity并单击这8个按钮中的任何按钮时,admo插播广告不会显示,但在按钮上单击它会打开目标活动。我想在每次点击按钮时显示广告插播广告。这是怎么

  • 我正在完成一个视频应用程序,我在离开视频activity时显示间隙广告。我只想每X分钟显示一次,但似乎每次我离开那个屏幕时它都在显示。 这是我的activity密码。 onCreate: onbackpressed: 当然,在admob中是这样设置的: 注意:我的应用程序没有发布,所以它正在显示“预览”o“示例”。我正在使用我的广告单元ID: 谢谢,

  • 我想在一定的时间间隔后,在主要活动上添加一个间隙广告。我搜索,似乎没有参考代码这样做。感谢你的帮助我该怎么做?任何示例代码都将是有用的。多谢了。

  • 我想在Google Play的“专为家庭设计”类别中为儿童制作应用程序。据此:https://support.google.com/googleplay/android-developer/answer/6184502有两条规则: 不得使用广告墙 插播广告不得在应用程序启动后立即显示 请您解释一下如何使间质广告不全屏(不是广告墙)? 广告墙和插页广告有什么区别? 我曾经用过这个填隙词:https: