如何在应用退出后停止显示插页式广告?

Posted

技术标签:

【中文标题】如何在应用退出后停止显示插页式广告?【英文标题】:How to stop interstitial ads showing up after app exit? 【发布时间】:2017-03-08 11:45:53 【问题描述】:

我的应用会在应用中显示插页式广告,有时会在应用因网速慢而关闭后显示。在应用关闭后显示插页式广告违反了 admob 规则。如何在应用关闭后阻止插页式广告展示广告??

public class des extends AppCompatActivity 

    ImageButton imageView15;
    InterstitialAd mInterstitialAd;
    private InterstitialAd interstitial;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_des);

        AdView mAdView = (AdView) findViewById(R.id.AdView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);

                   // Prepare the Interstitial Ad
        interstitial = new InterstitialAd(des.this);
// Insert the Ad Unit ID
        interstitial.setAdUnitId(getString(R.string.intertitial_id));

        interstitial.loadAd(adRequest);
// Prepare an Interstitial Ad Listener
        interstitial.setAdListener(new AdListener() 
            public void onAdLoaded() 
                // Call displayInterstitial() function
                displayInterstitial();
            
        );


        imageView15 = (ImageButton) findViewById(R.id.imageView15);
        imageView15.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                Intent intentLoadNewActivity = new Intent(des.this,vid.class);
                startActivity(intentLoadNewActivity);
            
        );


    

    public void displayInterstitial() 
// If Ads are loaded, show Interstitial else show nothing.
        if (interstitial.isLoaded()) 
            interstitial.show();
        
    


【问题讨论】:

【参考方案1】:

问题是您在 OnAdLoaded 中显示不建议的添加。这会导致不良行为并在用户执行其他工作时拦截。所以您应该在活动开始时加载您的广告,然后您应该显示它在通过检查是否已加载用户不受影响的时候。 这样,在用户使用完您的应用后,您的广告将不会显示,您的问题将得到解决。

【讨论】:

【参考方案2】:

您可以跟踪活动生命周期,然后在展示广告之前检查活动是否正在运行。

    创建实例变量:

    private boolean isRunning;
    

    跟踪活动生命周期:

    @Override
    protected void onStart() 
        super.onStart();
        isRunning = true;
    
    
    @Override
    protected void onStop() 
        super.onStop();
        isRunning = false;
     
    

    在展示广告之前检查活动是否正在运行:

    public void displayInterstitial() 
        // If Ads are loaded and the activity is running, show Interstitial else show nothing.
        if (isRunning && interstitial.isLoaded()) 
            interstitial.show();
        
    
    

【讨论】:

宁可使用 onPause 和 onResume 来避免在显示对话框时、在多窗口中以及当应用程序未聚焦时出现无效活动。【参考方案3】:

或者,只要您的应用不包含任何服务类,您就可以在用户想要退出您的应用时使用:system.exit(0);

【讨论】:

【参考方案4】:

您需要在活动结束或(退出应用程序)时销毁您的广告

试试这个

@Override
public void onDestroy()

    super.onDestroy();
    if (mInterstitialAd != null) 
        mInterstitialAd.destroy();
    

【讨论】:

你能用 onDestroy() 编辑我的 java 代码吗?因为当我尝试它不工作时,destroy 字会变成红色,我不知道如何修复它,我尝试了 alt+enter im new to app development跨度> 需要重写onDestroy()方法快捷键(Ctrl+O) 尝试在没有 if 块的情况下运行 just destroy 方法 mInterstitialAd.destroy() 不存在

以上是关于如何在应用退出后停止显示插页式广告?的主要内容,如果未能解决你的问题,请参考以下文章

如何在应用启动和退出时显示 Admob 插页式广告

如何在加载插页式广告后显示活动?

如何停用Admob插页式广告?

如何在 X 次点击后显示插页式广告

在颤动中我如何在每 5 分钟后显示插页式广告

如何使用“expo-ads-admob”在插页式广告中添加间隔