如何在应用退出时显示AdMob插页式广告

6
如何在应用退出时展示AdMob插页式广告。 我尝试使用onBackPressed()方法实现,但是出现了错误。 插页式广告的代码:
interstitial = new InterstitialAd(this, "AD_ID");


    AdRequest adRequest = new AdRequest();


    interstitial.loadAd(adRequest);


    interstitial.setAdListener(this);
  }
    @Override
      public void onReceiveAd(Ad ad) {

        if (ad == interstitial) {
          interstitial.show();
        }

    }

正确的做法是什么?


1
我不建议你这样做。Google正在严厉打击令人讨厌的广告,开发者文档明确表示不要阻止应用程序的退出。这样做会导致应用程序被暂停。相反,我建议你在应用程序的关键点显示广告。 - Ryan S
实际上,当广告在应用程序加载时,活动会从头开始,即所有用户操作都会从头开始。有没有办法避免这种情况?我的应用程序使用了ondraw()方法,当插页式广告随时显示时,用户必须从头开始...对此有什么帮助吗? - samdonly1
@RSenApps 我的理解是,如果用户点击主页,则应用程序会直接退出。在应用程序中,按返回按钮可执行各种操作(例如从游戏返回菜单),那么这个特定的返回按钮(用于显示插页广告)是否实际上特别?我问这个问题是因为当用户想要进行其他操作时(例如查看其他内容),在离开应用程序时最有可能希望看到广告,并且最不可能被其所搅扰。 - Richard Tingle
6个回答

7
我刚和Admob的一名员工谈了一次关于如何增加广告收入的愉快对话。他建议我在玩家退出我的游戏应用程序时添加插页式广告。虽然我没有仔细阅读所有条款和条件,但我相信Admob官方知道标准规定,如果不允许这种行为,他们不会建议这样做。
从技术上讲,我将按照以下方式实施:
1)捕捉用户点击退出按钮或在主屏幕上按返回按钮的时间
2)检查插页式广告是否已加载并准备好显示
-> 3a)如果没有准备好,我让用户立即退出
-> 3b)如果准备就绪,我显示插页式广告,并监听其关闭。当它关闭时,我自动退出应用程序。

1
提醒一下,我之前也像你一样设置了插页式广告,但是我收到了AdMob的邮件,告诉我不能这样做。我会在下面附上他们的邮件内容作为答案。 - Thupten
@Thupten 邮件在哪里?你说你要把它粘贴出来。 - erdomester
@erdomester,它被粘贴在我的答案中。它似乎不在此答案下方,而是在其上方的某个地方。 - Thupten
@BjörnKechel,您说得完全正确,我的客户也遇到了同样的情况。当我与Admob员工交谈时,他甚至向我发送了一封电子邮件,介绍如何通过退出广告增加收入,但是当我阅读了一些相关文章后,发现这违反了政策。当我实施它时,我也收到了同样的电子邮件。 - Smeet
我从应用程序中删除了该功能,因为它会与 Google 造成问题。我想不是每个人都知道确切的规则,所以现在我更愿意谨慎。 - Björn Kechel
显示剩余2条评论

3
不要将广告放置在应用程序的退出位置,因为这违反了admob政策。

This is not allowed as per admob policy

请查看此链接


2
不要在应用程序退出时尝试显示广告,而是在应用程序的关键点上显示,如RSenApps所说。
如果您的问题是当插页式广告显示时会导致视图在您的 Activity 上重新绘制,那么您需要持久化或缓存您的 Activity 的绘制状态,以便以前的状态可以快速地重新绘制。请注意保留 HTML 标签。

2
我之前在应用程序退出前放置了插屏广告。这是我从Admob收到的邮件摘录。在收到这封邮件后,我完全删除了插屏广告并重新提交了应用程序。
违规说明:
布局鼓励意外点击-插屏广告:出版商不得以任何方式鼓励用户点击Admob插屏广告。这包括任何可能会鼓励意外点击的实现,例如以防止查看应用程序核心内容的方式放置插屏广告,或以干扰浏览或与应用程序核心内容和功能交互的方式放置插屏广告。
请检查您如何实现插屏广告,并注意以下不符合规定的常见实现示例:
1.应用程序打开之前或关闭之后出现的插屏广告。 2.在用户关闭另一个插屏广告后触发的插屏广告。 3.当用户查看应用程序的内容时出现意外加载的插屏广告。记住只在内容页面之间提供插屏广告。 4.每次用户单击后都会触发的插屏广告。 5.出现在游戏玩耍或重度用户互动期间的插屏广告。
有关我们的政策和如何遵守的提示的更多信息,请阅读以下内容:
Admob广告放置政策 Admob插屏广告指南
需要采取的行动:检查帐户是否符合规定。
虽然对上述应用程序的广告投放已被禁用,但您的AdMob帐户仍处于活动状态。我们建议您花时间审查其余应用程序以确保它们符合我们的政策,并相应地监视您的应用程序,以减少我们未来可能会收到的政策电子邮件的可能性。此外,请注意,如果我们继续看到违规行为,则我们的团队保留随时禁用帐户的权利。

2
据我理解,这个规定的含义是,当退出应用时,插页式广告必须立即出现,不能在应用关闭后延迟弹出。但似乎 Admob 内部无法确定如何正确应用这个规则。为了保险起见,在应用退出时最好不要使用插页式广告。 - Björn Kechel

1
有点晚了,但我会回复其他人,这是我的代码。
这是一种方法,检测用户按下返回按钮时,显示一个带有积极和消极的对话框,如果他们按下“是”,则调用您的插页式广告方法。
问候
@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if (keyCode == KeyEvent.KEYCODE_BACK) {

        AlertDialog.Builder alert = new AlertDialog.Builder(
                MainActivity.this);
        alert.setTitle(R.string.app_name);
        alert.setIcon(R.drawable.ic_launcher);
        alert.setMessage(R.string.quit);

        alert.setPositiveButton("Yes",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int whichButton) {
                                                //call your method here then finish activity;

                        interstitial();

                        finish();
                    }



                });

    alert.setNegativeButton("No",
            new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub

                }
            });
    alert.show();
    return true;
}

return super.onKeyDown(keyCode, event);

}

2
你实际上测试过你的代码吗?你在展示插页式广告后立即结束了活动。 - FD_

-1
@Override
public void onBackPressed() {
   Log.d(TAG, "onBackPressed Called");
   displayInterstitial();

   finish();

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接