2016-09-15 61 views
0

我想在webview应用上显示插页式广告,并在打开页面(文章)后立即打开广告,因为admob政策对我说,要让广告显示在正常转场点。如何在webview应用上显示插页式广告?

你能告诉我该怎么做吗?

而且我还想知道如何控制广告外观,因为我不希望每次用户打开链接时都显示广告?

回答

1

如果您使用的是像科尔多瓦/ PhoneGap的/离子的框架你最好的机会是使用插件:https://github.com/appfeel/admob-google-cordova/

否则,你可以尝试让插件和删除科尔多瓦的依赖,并重构它可以被调用以你的JavaScript钩子,但它会很痛苦!

1

我建议您访问How to call admob Interstitial ad from android webview JavascriptInterface 我已经给出了从android webview中显示admob interstitial的解决方案。

实施例:

public class MainActivity extends AppCompatActivity { 
    WebView myWevView; 
    public InterstitialAd mInterstitialAd; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getSupportActionBar().hide(); 
     setContentView(R.layout.activity_main); 

     myWevView =(WebView)findViewById(R.id.myWevView); 
     WebSettings ws= myWevView.getSettings(); 
     ws.setJavaScriptEnabled(true); 
     ws.setDomStorageEnabled(true); 
     myWevView.getSettings().setUseWideViewPort(true); 
     myWevView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
     myWevView.setWebViewClient(new WebViewClient()); 
     myWevView.setWebChromeClient(new WebChromeClient()); 
     myWevView.getSettings().setBuiltInZoomControls(true); 
     myWevView.loadUrl("file:///android_asset/index.html"); 
     mInterstitialAd = new InterstitialAd(this); 
     mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); 
     mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
     mInterstitialAd.setAdListener(new AdListener(){ 
     @Override 
      public void onAdLoaded(){ 

      } 
      @Override 
      public void onAdClosed() { 
       // Load the next interstitial. 
       mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
      } 
     }); 

     } 




    public void displayLoadedAd(){ 
     runOnUiThread(new Runnable() { 
      public void run() { 
       if (mInterstitialAd.isLoaded()) { 
        mInterstitialAd.show(); 
        mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
       } 
       else 
        Toast.makeText(getApplicationContext(), "Ad not loded", Toast.LENGTH_SHORT).show(); 
      } 

     }); 


    } 


    public class WebAppInterface { 
     Context mContext; 
     /** Instantiate the interface and set the context */ 
     WebAppInterface(Context c) { 
      mContext = c; 
     } 
     @JavascriptInterface 
     public void showAdFromJs(){ 

      Toast.makeText(mContext, "Loading Ad", Toast.LENGTH_SHORT).show(); 
       displayLoadedAd(); 
     } 
    } 
    //Controlling navigation 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (event.getAction() == KeyEvent.ACTION_DOWN) { 
      switch (keyCode) { 
       case KeyEvent.KEYCODE_BACK: 
        if (myWevView.canGoBack()) { 
         myWevView.goBack(); 
        } 
        else { 
         finish(); 
        } 
        return true; 
      } 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
} 

从JavaScript调用

$("#btn1").click(function(){ 
    Android.showAdFromJs(); 
});