Перейти к содержанию
  • Регистрация
  • 0
Igor

новый AdMob в Delphi XE6 приложении

Вопрос

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

 

На месте где баннер должен быть в общем не вижу ничего, правда программу собирал в режиме дебага и название её сменил и путь установки (иначе не давало установить, писало что-то о сертификате, насколько я понял дело в том, что у меня по тому адресу, с тем названием стояла уже прога подписанная сертификатом, скаченная с гугл плей) , т.е. по сути это уже не та прога, что на гугл плее, но должно же хоть что-то на месте баннера было появиться наверно (?)

 

 

К сути:

 

0) На странице apps.admob.com создал рекламный блок для своего уже активного приложения.

 

Используя старый проект приложения, стал добавлять нужное, а именно:

 

1) Добавил TBannerAd

2) Настроил соединение с рекламой.

  • Delphi:  BannerAd1.AdUnitID := 'YourAdUnitID';
  • В файле AndroidManifest.template добавил сразу после </activity> на линии 32:

<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

  • В Uses Permissions включил Access network state и Internet.

3) Выставил TestMode в TBannerAd на True.

4) В "Unit1.pas", в private секции добавил:

    ActionBeginDate: TDateTime;

    WastedSeconds: Integer;

5) В uses секции прописал "System.DateUtils".

6) Определил обработчики событий с реализациями, показанными в разделе Code ниже.

  1. Выбрал форму и определил обработчик событий для её OnShow события.
  2. Выбрал баннер и определил обработчики событий для его событий OnActionCanBegin и OnActionDidFinish.
 

Источник 1

Источник 2

 

На примере:

unit Unit1;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Advertising, System.DateUtils;
 
type
  TForm1 = class(TForm)
    BannerAd1: TBannerAd;
    Label1: TLabel;
    procedure FormShow(Sender: TObject);
    procedure BannerAd1ActionCanBegin(Sender: TObject;
      var WillLeaveApplication: Boolean);
    procedure BannerAd1ActionDidFinish(Sender: TObject);
  private
    ActionBeginDate: TDateTime;
    WastedSeconds: Integer;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.fmx}
 
procedure TForm1.BannerAd1ActionCanBegin(Sender: TObject;
  var WillLeaveApplication: Boolean);
begin
  ActionBeginDate := Now;
end;
 
procedure TForm1.BannerAd1ActionDidFinish(Sender: TObject);
var
  Seconds: Integer;
begin
  Seconds := SecondsBetween(ActionBeginDate, Now);
  WastedSeconds := WastedSeconds + Seconds;
  Label1.Text := IntToStr(WastedSeconds) + ' seconds wasted watching ads so far.'
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
  BannerAd1.LoadAd;
end;
 
end.

У гуглов в их справке в манифест ещё просят внести мету:

<meta-data android:name="com.google.android.gms.version"
               android:value="@integer/google_play_services_version"/> 

и объявление немного отличается от того, что в справке Rad XE6:

<activity android:name="com.google.android.gms.ads.AdActivity"
             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

но мету когда добавил ошибка вышла, а в объявлении разница состоит в "gms.", но нужен он или нет не знаю (?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

не уверен, что в нужный подфорум добавил тему, если я ошибся - не удаляйте пожалуйста, перенесите куда нужно пожалуйста

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Есть некоторые продвижения. Делаю релиз в режиме дебага (правда в новую папку), но раз релиз то может быть подписан? Во всяком случае ставится.

Добавил строку: BannerAd1.LoadAd; в FormCreate помимо FormShow

Убрал:

procedure TForm1.BannerAd1ActionCanBegin(Sender: TObject;
  var WillLeaveApplication: Boolean);
begin
  ActionBeginDate := Now;
end;
 
procedure TForm1.BannerAd1ActionDidFinish(Sender: TObject);
var
  Seconds: Integer;
begin
  Seconds := SecondsBetween(ActionBeginDate, Now);
  WastedSeconds := WastedSeconds + Seconds;
  Label1.Text := IntToStr(WastedSeconds) + ' seconds wasted watching ads so far.'
end; 

с их объявлениями и объявлениями их переменных;

отключил TestMode

заменил в манифесте строку:

<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

на:

<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

 

И появилось чёрное окошко с красными буковками, правда не на всю ширину и это не совсем баннер, но уже что-то, а написано там (то что видно):

....st have AdActivity declared in AndroidM....

                xml with configChanges.

видимо это:

You must have AdActivity declared in AndroidManifest.xml with ConfigChanges

Изменено пользователем Igor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

заменяя мету:

<meta-data android:name="android.app.lib_name"
                android:value="%libNameValue%" />

на:

<meta-data android:name="com.google.android.gms.version"
               android:value="@integer/google_play_services_version"/>

получаю ошибку касательно этих строк и ссылку на справку Troubleshooting: Cannot Deploy an Application for Android

 

но чувствую заменять мету и не нужно вовсе, хоть я точно и не знаю зачем она, но предполагаю что на функционал не влияет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

по непонятным причинам перестала появляться та надпись в чёрном окошке, а также устанавливаться apk в авто-режиме из студии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

появления надписи снова я добился, но дальше двинуться не могу.

у кого-нибудь стоит AdMob?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В XE7 есть некий Project > Options > Entitlement List, and select AdMob Service исходя из справки

которого нет в моём XE6, мой Entitlement List просто пуст, может SDK какой-то нужно ещё поставить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

насколько я понял актуальные мета и объявление такие:

<meta-data android:name="com.google.android.gms.version"
                android:value="4323000"/>
<activity android:name="com.google.android.gms.ads.AdActivity"
             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

но видимо они работают только в купе с обновлённым (фиксом) Delphi, иначе происходит ошибка:

К сожалению, приложение ***** остановилось.

 

Так что наверное качаем данный фикс и правим при надобности манифест как написано выше. Наверное, т.к. это пока теория не проверенная на практике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

насколько я понял актуальные мета и объявление такие:

<meta-data android:name="com.google.android.gms.version"
                android:value="4323000"/>
<activity android:name="com.google.android.gms.ads.AdActivity"
             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

но видимо они работают только в купе с обновлённым (фиксом) Delphi, иначе происходит ошибка:

К сожалению, приложение ***** остановилось.

 

Так что наверное качаем данный фикс и правим при надобности манифест как написано выше. Наверное, т.к. это пока теория не проверенная на практике.

Ну как? Получилось? У меня тупо не появляется баннер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От TTTimon
      Извините, может не туда написал, но по всему форуму искал ответ, но так и не нашел)
      Проблема в том, что первый раз подключаю рекламу и просто чего-то не знаю! Прошу помощи у знатоков, как именно подключить рекламу?
      Для TestMode все работает, на устройстве отображается тестовая информация в рекламном блоке, но вот как подключить уже не тестовую рекламу? На сервисе AdMob получил идентификатор: ca-app-pub-ХХХХХХХХХХХХХХХХ/ХХХХХХХХХХ, TestMode = false, но ничего!
    • От Alex7wrt
      Здравствуйте.
      Нужен совет по интеграции баннера Admob к iOS приложению. Может быть кто-нибудь уже делал подобное?
      Насколько я начитался в инете по похожим запросам, нужно скачать GoogleMobileAds.framework и подключить его в Project-Options-Linking-Options passed to the LD Linker. Кроме этого фреймверка еще нужны такие:
      EventKit  EventKitUI  AVFoundation  AdSupport  AudioToolbox  AVFoundation  CoreGraphics  CoreTelephony  CoreMedia  MessageUI  StoreKit  SystemConfiguration Которые подгрузил в SDK Manager. 
      Далее в  “Options passed to the LD linker” добавляю:
      -ObjC -LC:\Users\<user>\Documents\Embarcadero\Studio\SDKs\iPhoneOS8.3.sdk\usr\lib Frameworks\GoogleMobileAds.framework\GoogleMobileAds Frameworks\AdSupport.framework\AdSupport Frameworks\AudioToolbox.framework\AudioToolbox Frameworks\AVFoundation.framework\AVFoundation Frameworks\CoreGraphics.framework\CoreGraphics Frameworks\CoreMedia.framework\CoreMedia Frameworks\CoreTelephony.framework\CoreTelephony Frameworks\EventKit.framework\EventKit Frameworks\EventKitUI.framework\EventKitUI Frameworks\MessageUI.framework\MessageUI Frameworks\StoreKit.framework\StoreKit Frameworks\SystemConfiguration.framework\SystemConfiguration -lxml2.2
      После этого во время компиляции возникает ошибка в фреймворке GoogleMobileAds.framework. 
      Все остальные фреймворки ошибок не вызывают.
      Текст ошибки: 
      [DCC Error] E2597 NYI lto::archName
      ld: file was built for unsupported file format ( 0x56 0x65 0x72 0x73 0x69 0x6F 0x6E 0x73 0x2F 0x43 0x75 0x72 0x72 0x65 0x6E 0x74 ) which is not the architecture being linked (arm64):
      Это для версии iOS Device 64 bit. Для 32 бит ошибка та же, только в конце вместо arm64 написано armv7.
      Символы 0x56 0x65 0x72 0x73 0x69 0x6F 0x6E 0x73 0x2F 0x43 0x75 0x72 0x72 0x65 0x6E 0x74 в переводе на ACSII значат "Versions/Current" - это часть строки в файле GoogleMobileAds.
      Вот и не пойму как эту ошибку обойти.
    • От Andrey Efimov
      Ссылка: http://delphifmandroid.blogspot.ru/2016/07/admob.html
      Автор: Андрей Ефимов
      Описание: Подробная инструкция по добавлению рекламного блока в приложение, разработанное в RAD Studio.
       
    • От Gingercat
      Доброго времени суток. Надеюсь, не достал с вопросами (сейчас перепробовал все, что можн, в том числе и переустановку).
       
      Собственно, отложив добавление адмоб на закуску, столкнулся с проблемой - при добавлении, приложение стартует и вылетает. Разрешения прописаны, манифест исправлен - все в порядке. Нашел на форуме ссылку, прочел о Entitlement list.
       
      И тут самое веселое - нет такого пункта в меню Продолбавшись, сообразил, что меню появляется при создании проекта для всех платформ, включая ios. Мну в начале их отрубил - зачем, не знаю. 
       
      И самое интересное - не могу подключить платформу к проекту. Виндовс в меню добавления платформы есть, а вот ios и mac - попросту нет....
       
      На новом проекте, платформы удаляются и добавляются потом без проблем, а у меня только Вин доступно для добавления
       
      В итоге - подключить платформы (дабы появился Entitlement list), я не могу, как результат - рекламу также. Пробовал создавать тестовое приложение с добавлением рекламы - все в порядке, то бишь проблема явно в Entitlement list.
       
      Вот теперь как - переписывать все с нуля, сдурею.
       
      Может кто сталкивался: что за проблема с подключением платформ? Потому что, как скопировать всю программу в новый проект не придумал, и остается перепись с нуля - сумасшедший кусок работы (или может каким то образом можно перенести кучу контролов и кода в новый проект - хотя с трудом верится).
       
      Прложение Android.
       
      Извиняюсь за много букв, и буду благодарен любым, самым фантастическим предположениям.
       
      P.S. может и не морочил бы голову - молча переписал, но там такая куча позиционирования. Дабы не плодить очередную поделку, когда всплывающая клавиатура перекрывает поле для ввода)))) весь интерфейс перестраивается под каждый чих пользователя (юзер френдли, мать его) - освбождается место, поля вверх поднимаются и тд. второй раз такое...))
    • От Igor
      Видимо по-умолчанию под Android компонент TBannerAd показывает AdMob, в под iOS показывает iAd.
      Когда делал приложение на андройде, баннер показывал AdMob и я даже не задумывался об этом. Теперь же я скомпилировал приложение под iOS вставив туда код баннера AdMob, но при запуске приложения показывается реклама iAd, вернее что-то типо "вы используйте iAd, тыкните чтобы использовать", т.е. рекламы нет конечно, т.к. ссылка даже не на эту сеть, но компонент работает с iAd.
       
      Можно ли штатными средствами дать понять компоненту баннера, что я ссылаюсь на AdMob? Не нашёл в его свойствах такого пункта, беглый гугл тоже не помог.
       
      Судя по этому предусмотрены лишь родные сети, но мало ли. Хотелось бы использовать AdMob в FMX под iOS.
    • От CrazyUser
      в delphi xe4 и xe5 это осуществлялось вот так:
      procedure TForm1.FormCreate(Sender: TObject); var Col, Row: Integer; CellCtrl: TStyledControl; begin StringGrid1.Cells[ 0, 0 ] := 'Cell00'; StringGrid1.Cells[ 1, 0 ] := 'Cell10'; StringGrid1.Cells[ 0, 1 ] := 'Cell01'; StringGrid1.Cells[ 1, 1 ] := 'Cell11'; for Col := 0 to StringGrid1.ColumnCount - 1 do begin for Row := 0 to StringGrid1.RowCount - 1 do begin CellCtrl := TColumnAccess( StringGrid1.Columns[ Col ] ).CellControlByRow( Row ); if ( CellCtrl <> nil ) and ( CellCtrl is TTextCell ) then begin TTextCell( CellCtrl ).StyledSettings := []; TTextCell( CellCtrl ).FontColor := claBlueViolet; TTextCell( CellCtrl ).Font.Family := 'Times New Roman'; TTextCell( CellCtrl ).Font.Style := [ TFontStyle.fsBold ]; TTextCell( CellCtrl ).Font.Size := 14; end; end; end; end; в Delphi xe6 этот код ошибок не выдает, но и не чего не делает ((
      Подскажите, что не так?
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...