Как поставить Google Adsense в GWT - PullRequest
10 голосов
/ 11 февраля 2009

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

Ответы [ 8 ]

3 голосов
/ 12 февраля 2009

Вы можете поместить 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-адрес регулярного выражения в аргумент командной строки -whitelist.

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

3 голосов
/ 12 февраля 2009

Согласно этой теме в AdSense :

Короткая версия, вы не можете использовать Adsense через Ajax, не нарушая Правила программы / T & C's

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

Рекламный код передан через вызов xmlhttp не отображается, просто рассматривается как текст (следовательно, responseText). Единственный способ выполнения кода JS заключается в использовании «responseXML» в сочетании с Команда "exec ()".

Например ...

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

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

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

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

Не очень полезно от AdSense точка зрения, но это то, как это делается.

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

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

2 голосов
/ 19 марта 2010

Если вы действительно хотите, чтобы AdSense был как бы "внутри" GWT, я бы использовал виджет Frame. По сути, виджет 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>

в ваш файл .ui.xml и логику в соответствующий файл .java :

@UiField
    Frame sponsor;

Также вы должны поместить действительный код Google AdSense (материал ) в отдельный файл HTML в общей папке GWT, который в данном случае называется Google-AdSense.html и расположен внутри папки extern внутри папки public . issue (в атрибуте Frame url ) в этом случае является выходной папкой GWT.

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

Кстати, это также способ встраивания кода Google Analytics в GWT.

2 голосов
/ 10 марта 2009

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

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

1 голос
/ 13 августа 2012

Я мог бы сделать это, используя DFP Small Business + тег Async Publisher + интеграция 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')});
}-*/;

Чтобы обновить объявление, просто вызовите обновление объявления для рекламного места, указанного в заголовке:

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

Вот и все!

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

Сейчас я пытаюсь понять, как заставить бота AdSense сканировать мое ajax-приложение. Я реализовал схему сканирования Ajax:

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

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

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

1 голос
/ 31 декабря 2010

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

0 голосов
/ 23 июля 2011

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

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

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

Так что все в порядке:

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

Но это не так:

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

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

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

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

0 голосов
/ 24 февраля 2009

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

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

...