2017-02-17 54 views
0

我向我的应用添加了插页式广告(+横幅),其中包含一项活动,横幅没有问题,但插页式广告仅在应用启动时显示一次,我的应用不包含任何按钮或操作,仅包含pdfview,想要做的就是当用户阅读pdf时每5分钟显示一次广告。我搜索了类似的问题,但无法得到它。在这里我的代码加载和显示广告:如何调用多个插页式广告?

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

    // Prepare the Interstitial Ad 
    interstitial = new InterstitialAd(PDFViewActivity.this); 
    // Insert the Ad Unit ID 
    interstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); 
    interstitial.loadAd(adRequest); 
    // Prepare an Interstitial Ad Listener 
    interstitial.setAdListener(new AdListener() { 
     public void onAdLoaded() { 
      // Call displayInterstitial() function 
      displayInterstitial(); 
     } 
    }); 
} 

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

想想这个想法两次。首先,这不是Google提出的展示插页式广告的建议方式。其次,你会因为这种恼人的行为而让用户失望,所以他们绝不会点击并卸载你的应用。 – Bevor

+0

如果你认为你比用户更了解它,那么祝你好运;) – Bevor

回答

0

我就是这么做的:

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

    // Prepare the Interstitial Ad 
    interstitial = new InterstitialAd(this); 
    interstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); 

    interstitial.loadAd(adRequest); 

    interstitial.setAdListener(new AdListener() { 
     public void onAdLoaded() { 
      displayInterstitial(); 
     } 
     public void onAdClosed() { 
      requestNewInterstitial(); 
     } 

    }); 
} 

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

public void requestNewInterstitial() { 
    mHandler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      AdRequest adRequest = new AdRequest.Builder() 
        .build(); 
      interstitial.loadAd(adRequest); 

      if (mHandler != null) { 
       mHandler.postDelayed(this, 100000); //time (ms) 
      } 
     } 
    }, 100000); //time (ms) 
} 
0

好了,你想在规则的时间间隔来显示插页广告。那么你可以通过使用下面的代码行来做到这一点。

但是,这是违反Google admob的政策。但是,你走了。

在mainactiviy.java中添加以下代码。

prepareAd(); 

    ScheduledExecutorService scheduler = 
      Executors.newSingleThreadScheduledExecutor(); 
    scheduler.scheduleAtFixedRate(new Runnable() { 

     public void run() { 
      Log.i("hello", "world"); 
      runOnUiThread(new Runnable() { 
       public void run() { 
        if (mInterstitialAd.isLoaded()) { 
         mInterstitialAd.show(); 
        } else { 
         Log.d("TAG"," Interstitial not loaded"); 
        } 

        prepareAd(); 


       } 
      }); 

     } 
    }, 20, 20, TimeUnit.SECONDS); 

然后MainActivity.java

public void prepareAd(){ 
    mInterstitialAd = new InterstitialAd(this); 
    mInterstitialAd.setAdUnitId("ca-app-pub-39xxx560xxxxxxx/10331xxxxx"); 
    mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
} 

public void prepareAd(){ 
    mInterstitialAd = new InterstitialAd(this); 
    mInterstitialAd.setAdUnitId("ca-app-pub-39xxx560xxxxxxx/10331xxxxx"); 
    mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
} 

间质性AdMob编号这里使用的是一个样品ID的最后大括号之前添加下面的行代码。代码取自http://www.elegantespace.com/how-to-load-interstitial-ad-at-regular-interval-of-time/