Как сделать так, чтобы приложение 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, но приведенный выше общий формат, который вы бы использовали.