Как поместить Google Adsense в GWT

кто-нибудь знает, как поместить объявления Google adsense в веб-приложение GWT?

8 ответов


вы можете поместить javascript-код из Adsense на одну HTML-страницу, с которой начинается GWT. Таким образом, реклама не будет отображаться в той же области, что и GTW, но выше/ниже кода GWT. Для рекламы, которая может быть в порядке.

этот пример помещает банер над приложением:

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>www.javaoracleblog.com</title>
    <script type="text/javascript" language="javascript" src="com.javaoracleblog.aggregator.nocache.js"></script>
  </head>
  <body>
<script type="text/javascript"..
ADsense code here 
</script>
    <!-- OPTIONAL: include this if you want history support -->
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
  </body>
</html>

чтобы указать Google WT, что сайту Google adsense можно доверять, вам нужно добавить соответствующий URL-адрес regex в командную строку-whitelist аргумент.

обратите внимание, что это, вероятно, не решит проблемы, описанные в приведенной выше статье "Почему я сбросил GWT".


по данным этот поток на AdSense:

короткая версия, вы не можете использовать Adsense через Ajax, не нарушая политики/программы п

длинная версия...

код объявления, переданный через вызов xmlhttp не отображается, это просто рассматривается как текст (следовательно, responseText). Единственный способ выполнения кода js заключается в использовании "стандартизации" в сочетании с "команда Exec.

например...

Если ваш xml содержит что-то вместе строки:

Это содержание от внешнего код файла javascript идет сюда

вы бы назначили переменную (называемую page_data например), используя ajax_obj.responseXML, запустите XML через парсер и запустить

exec (переменная js или строка из XML здесь);

не очень полезно из Adsense точка зрения, но так оно и есть. сделанный.

Это также стоит упомянуть почему я бросил GWT:

другой проблемой были мои adsense знамена. Так как я не много содержание на странице, баннеры были иногда не по теме. Еще больше проблема была в том, что баннеры остались то же самое, когда люди искали различных ключевых слов (с "Аяксом" обновление не вызвало adsense обновлять.) Я решил это делать поиск с обновлением страницы вместо из вызов ajax. Часть ajax сайт был ограничен сортировкой, огранкой, i18n и показывать советы.


вы можете проверить интервью Я сделал с InfoQ. Она включает в себя главы из моей книги, и это происходит на SEO.

Это не тривиально, но я думаю, что решения в главе позволяют GWT хорошо работать в среде, где SEO важен. Основное решение-реализовать то, что я называю "загрузкой". Это означает, что ваши страницы принимают информацию, которая обычно встречается в запросах GWT-RPC, и сериализуют их на страницу. Виджет GWT затем загружает эту информацию без запроса RPC. В то время как ваша страница сериализует информацию в JavaScript, легко также написать


Если вы действительно хотите, чтобы AdSense был своего рода" внутри " GWT, я бы использовал виджет кадра. В основном виджет Frame генерирует

и вот фактическое решение:

вы должны поставить

<ui:style>
    .sponsor {
    border: 0em;
    width: 20em;
    height: 6em;
    float: right;
    display: inline;
    }
</ui:style>
<g:HTMLPanel>
    <g:Frame ui:field="sponsor" url="issue/extern/Google-AdSense.html" styleName="{style.sponsor}"/>
</g:HTMLPanel>

в своем .пользовательский интерфейс.в XML файл и логика в соответствующий .java:

@UiField
    Frame sponsor;

Также вы должны поместить фактический код Google AdSense (материал

и вот как это выглядит: рекламу в правом верхнем углу.

Btw это также способ встроить код Google Analytics в GWT.


вот как я это делаю. У меня есть демо и исходный код здесь: http://code.google.com/p/gwt-examples/wiki/DemoGwtAdsene


Я мог бы сделать это с помощью DFP Small Business + async Publisher tag + AdSense интеграции:

вот код:

на вашей главной странице, поставьте тег издателя, что-то вроде:

    <head>
        <script type="text/javascript" src="http://www.googletagservices.com/tag/js/gpt.js"></script>
            <script type="text/javascript">
              var slot1 = googletag.defineUnit('/XXXX/ca-pub-YYYYYYYYYYYYYYY/transaction', [468, 60], 'div-gpt-ad-ZZZZZZZ-0').addService(googletag.pubads());
              googletag.pubads().enableSingleRequest();
              googletag.enableServices();
            </script>

...
    </head>

Я создал представление с uiBinder, с div с идентификатором, указанным в голове, например:

    <g:HTMLPanel height="62px" width="100%">

            <div id='div-gpt-ad-ZZZZZZZ-0' style='width:470px; height:60px;'>
            </div>
    </g:HTMLPanel>

в методе onLoad () представления вы инициализируете объявление следующим образом:

@Override
protected void onLoad() {

    setupAd();
}

public static native void setupAd() /*-{
    $wnd.googletag.cmd.push(function() {$wnd.googletag.display('div-gpt-ad-ZZZZZZZ-0')});
}-*/;

чтобы обновить объявление, просто вызовите refresh ad для слот, указанный в head:

public static native void refreshAd() /*-{
    $wnd.googletag.pubads().refresh([$wnd.slot1]);
}-*/;

вот и все!

для получения дополнительной информации о теге publisher, проверьте: http://support.google.com/dfp_sb/bin/answer.py?hl=en&answer=1649768

теперь я изо всех сил пытаюсь узнать, как сделать Adsense bot для craw моего приложения ajax. Я реализовал схему обхода Ajax:

https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

но У меня есть информация с форума AdSense, что бот AdSense (Mediapartners-Google) не работает со схемой Ajax "escaped fragment". Кто-нибудь знает, планирует ли Google добиться какого-либо прогресса в этом?

это ограничивает этот подход, чтобы обслуживать только процентные объявления, так как контекстное обслуживание объявлений зависит от схемы обхода ajax.


Google AdSense бот обходит вашу страницу, чтобы определить, какие объявления для обслуживания. Поэтому не следует размещать AdSense на страницах с преимущественно динамическим контентом. Это не сработает.

может быть, вам стоит посмотреть другие рекламные программы?


Вы можете использовать AdSense и GWT вместе без использования фреймов или других хаков, если вы позаботитесь о том, как вы создаете свои хост-страницы.

ключ должен включить ваш код AdSense на главной странице, а затем управлять элементом dom, содержащим объявление, но не оторвать это со страницы. Таким образом, вы можете переместить объявления в тело другого кода gwt, пока структура dom не будет изменена.

Если вы отсоедините и снова присоедините содержащий элемент dom тогда он будет работать в Chrome и Firefox, но IE покажет пустое пространство. Сначала я попытался переместить элемент ads DIV в DockLayoutPanel и думал, что все было здорово, пока я запоздало не протестировал его в IE.

Итак, это нормально:

Element element = Document.get().getElmentById("ad");
element.getStyle().setPosition(ABSOLUTE);
element.getStyle().setTop(20, PX);

но это не так:

myPanel.add(ElementWrapper.wrap(element));

потому что добавление виджета к другому виджету повторно родит его.

это означает, что вы не можете использовать какой-либо из встроенных LayoutPanel для хранения вашего объявления div, потому что Layout не может обернуть существующий элемент (он создает свой собственный DIV в своем конструкторе). Вы можете изменить материал панели макета, чтобы он обертывал элемент и не повторял его... но я еще не пробовал.

я протестировал результаты в IE6+, Chrome и Firefox. Недостатком является то, что вы не можете обновить рекламу, если не загрузите новую страницу. Но в моем случае GWT использовался для улучшения html-страниц, так что это не было проблемой. В любом случае... пользователи чаще нажимают на другое объявление, чем то, которое они читали несколько раз? Не уверен, что это так важно.