Как сделать так, чтобы приложение Android для веб-просмотра не показывало рекламу AdSense?

Я сделал приложение для Android, показывающее часть моей веб-страницы в веб-просмотре. Проблема в том, что на веб-странице есть несколько рекламных объявлений, и их нельзя показывать в приложении. Итак, вопрос: есть ли какой-нибудь способ сделать их не показанными в приложении?

код:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("http://androidomedia.com/angry-birds-space-walkthrough/");
    mWebView.setWebViewClient(new HelloWebViewClient());

}

   private class HelloWebViewClient extends WebViewClient {
       @Override
       public boolean shouldOverrideUrlLoading(WebView webview, String url)
       {
           webview.loadUrl(url);
           return true;
       }
       }
   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event)
   {
       if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
       {
           mWebView.goBack();
           return true;            
       }
       return super.onKeyDown(keyCode, event);

   }

} `

2 ответа

Вы можете справиться с этим на стороне сервера, предполагая, что контент генерируется динамически. Просто пусть веб-сервер не показывает рекламный блок, если запрос поступает из вашего приложения для Android. Explicity установите пользовательский агент на стороне android и проверьте его при сборке шаблона.

Во-первых, вам нужно установить в строке User Agent что-то, что вы можете легко обнаружить, например, так:

mWebView.getSettings().setUserAgentString("AndroidWebView");

Во-вторых, на сервере, на котором размещен ваш сайт, вам нужно динамически сгенерировать скрипт, который вам дал Google. Если вы используете ASP.NET для размещения вашего сайта, вы можете сделать что-то вроде этого:

protected void Page_Load(object sender, EventArgs e)
{

                //Ensure that the Adsense ad isn't loaded if the calling user is using a WebView
                if (Request.UserAgent.Contains("AndroidWebView"))
                {
                    return;
                }

                //Create the Google Adsense ad dynamically
                var sb = new StringBuilder();
                sb.AppendLine("google_ad_client = \"ca-pub-123456789\";");
                sb.AppendLine("/* Ad Name Here */");
                sb.AppendLine("google_ad_slot = \"123456785\";");
                sb.AppendLine("google_ad_width = 728;");
                sb.AppendLine("google_ad_height = 90;");
                sb.Append("//-->");

                var scriptTag = new HtmlGenericControl("script");
                scriptTag.Attributes.Add("type", "text/javascript");
                scriptTag.InnerHtml = sb.ToString();

                var scriptTag2 = new HtmlGenericControl("script");
                scriptTag2.Attributes.Add("type", "text/javascript");
                scriptTag2.Attributes.Add("src", "http://pagead2.googlesyndication.com/pagead/show_ads.js");

                phBigAd.Controls.Add(scriptTag);
                phBigAd.Controls.Add(scriptTag2);

    }

После этого добавьте PlaceHolder на свою страницу разметки ASPX с именем phBigAd везде, где вы хотите разместить свое объявление на сайте:

<asp:PlaceHolder ID="phBigAd" runat="server" />

Конечно, вам нужно заменить код AdSense своим собственным при добавлении в StringBuilder, но приведенный выше общий формат, который вы бы использовали.

Другие вопросы по тегам