Перейти к содержанию
  • 0
HelleR

Отправка событий в Firebase Google Analytics - GA4

Вопросы

Добрый день.

Я пытаюсь отправить события из написанного на Delphi 10.4.2 приложения в Firebase  Google Analytics [ GAv4 ]

Пытался работать по инструкции предложенной в посте, но пришлось переделать.

Использую com-google-android-gms.play-services-analytics-impl.16.0.8.jar и обвертку Androidapi.JNI.PlayServices

После запуска в логах приходит следующее:

04-23 15:03:50.835 30878 30878 I GAv4    : Google Analytics 12.4.51 is starting up. To enable debug logging on a device run:
04-23 15:03:50.835 30878 30878 I GAv4    :   adb shell setprop log.tag.GAv4 DEBUG
04-23 15:03:50.835 30878 30878 I GAv4    :   adb logcat -s GAv4
04-23 15:03:50.869 30878 30878 D GAv4    : setLocalDispatchPeriod (sec): 5
04-23 15:03:51.506 30878 30986 D GAv4    : Sending first hit to property: 269XX9293
04-23 15:03:51.508 30878 30986 D GAv4    : Hit delivery requested: ht=1619179430868, _s=0, _v=ma12.4.51, a=2027768350, adid=7b03fae1-XXXX-4820-892a-ba3983eb6b7e, aid=com.XXXXXXX, an=XXXXXXX, ate=1, av=1.0.1, cid=24213dea-e355-XXXX-8b91-17087584684a, ea=lo
gin, ec=login, el=login, ev=87, sr=1080x2030, t=event, tid=269XX9293, ul=ru-ru, v=1
04-23 15:03:51.737 30878 30986 D GAv4    : Hit sent to the device AnalyticsService for delivery

 

Добавил в AndroidManifest.xml

<receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
            android:enabled="true">
            <intent-filter>
                <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
            </intent-filter>
        </receiver>
        <service android:name="com.google.android.gms.analytics.AnalyticsService"
            android:enabled="true"
            android:exported="false"/>

        <!-- Optionally, register CampaignTrackingReceiver and CampaignTrackingService to enable
             installation campaign reporting -->
        <receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER" />
            </intent-filter>
        </receiver>
        <service android:name="com.google.android.gms.analytics.CampaignTrackingService" />    
unit GoogleAnalytics;

interface

 uses
   System.SysUtils,

   System.Types, System.UITypes, System.Classes, System.Variants,
  {$IFDEF ANDROID}
      Androidapi.JNI.PlayServices,
      Androidapi.Helpers,
      Androidapi.JNI.JavaTypes,     
      Androidapi.JNI.GraphicsContentViewText,
  {$ENDIF}
   FMX.Types;

type
     TwGoogleAnalytics=class
       private
        FCollectDataPermission
                      : boolean;
        FGoogleAppId,
        fClient_Id
                      : String;
        {$IFDEF ANDROID}
          FTracker    : Janalytics_Tracker;
          FGoogleAId, JClient_Id  : JString;
        {$ENDIF}
       public
         {$IFDEF ANDROID}
            JGA : Janalytics_GoogleAnalytics;
            property CollectDataPermission: boolean read FCollectDataPermission write FCollectDataPermission;
         {$ENDIF}
          constructor Create;
          procedure SetParams(const aGoogleAppID, aClient_Id:string);
          
         property GoogleAppId:string read FGoogleAppId;
     end;

implementation


 constructor TwGoogleAnalytics.Create;
  begin
   FGoogleAppId := '';
   fClient_Id   := '';
  end;

  procedure TwGoogleAnalytics.SetParams(const aGoogleAppID, aClient_Id : String);
  var
    Map1      : JMap;
    Hit       : JHitBuilders_HitBuilder;
    EventHit  : JHitBuilders_EventBuilder;
    Loger     : Janalytics_Logger;
  begin
   {$IFDEF ANDROID}
    CollectDataPermission := true;//(Ini.CollectDataPermission = PERMISSION_YES);

    JGA   :=  TJanalytics_GoogleAnalytics.JavaClass.getInstance( TAndroidHelper.Context );
    JGA.setDryRun(false);
    JGA.reportActivityStart( SharedActivity );

    FGoogleAId  :=  StringToJString(aGoogleAppID);
    JClient_Id  :=  StringToJString(aClient_Id);
    FTracker    :=  JGA.newTracker(FGoogleAid);

    if FTracker <> nil then
    Begin
      FTracker.enableAutoActivityTracking(true);
      FTracker.enableAdvertisingIdCollection(true);

      EventHit:= TJHitBuilders_EventBuilder.Create;

      EventHit.setAction(StringToJString('login'));
      EventHit.setCategory(StringToJString('login'));
      EventHit.setLabel(StringToJString('login'));
      EventHit.setValue(87);

      Map1 := EventHit.build;


      FTracker.send(Map1);

      JGA.setLocalDispatchPeriod(5);
    End;
   {$ENDIF}
   FGoogleAppId:=aGoogleAppID;
  end;
...
end.

Но никакой информации в аналитику не приходит. Из описания наверняка не понятно что передается в параметре TrackingId (tid) поэтому передавал туда, все что было в google-services.json (перебирал варианты) и также идентификатор потока и id ресурса гугл аналитики. 

Возможно библиотека из дистрибутива delphi 10.4.2 [ com-google-android-gms.play-services-analytics-impl.16.0.8.jar ] устарела, а как обновить до 17.4.1 я не разобрался, везде предлагают gradle, но как получить в итоге jar я не понял. 

Буду рад любым мыслям, спасибо.

 

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


Ссылка на сообщение

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

  • 0

Добрые люди подсказали, что GAv4 это совсем не GA4 Firebird, f 4 -ая версия универсальной аналитики, которая мне не подойдет, так как мне нужна аналитика только для приложений. А библиотеки под Firebase нет, только gradle...

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


Ссылка на сообщение

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

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

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

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

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

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

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

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


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

    • От x11
      Кто-то пытался работать с  Realtime Database или с Cloud Firestore?
      Я понимаю, что там всё на REST. Но пока что непонятно, куда именно отправлять запросы.
      Кто-то пытался это использовать?
      https://github.com/spinettaro/Firebase4Delphi
      у меня так и не взлетело, даже аутентификация не проходит
    • От Равиль Зарипов (ZuBy)
      Ссылка: http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html
      Автор: Зарипов Равиль @ZuBy
      Описание: Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
      В предыдущей  части , я рассказывал как сделать настройку пуш уведомления в консоли Firebase, в этой я покажу код на Delphi и серверную часть на PHP
      https://github.com/rzaripov1990/PUSHTestFCM
    • От Равиль Зарипов (ZuBy)
      Ссылка: http://blog.rzaripov.kz/2017/02/firebase-android-ios.html
      Автор: Зарипов Равиль @ZuBy
      Описание: Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS
    • От master webs
      P.S.//  приложение никаких изменений не потерпело  код рабочий и проверенный на версиях 10/10,1 berlin
      http://alexbirukov.ru/?go=all/php-server-dlya-rassylki-push-na-android-i-ios/ 
      исходники на github https://github.com/master-webs/ios-push-FCM-delphi
      в серверной части изменил регистрацию устройства в нашей базе .
      GCM практически ни чем не отличается от FCM  как описал гугл в FCM больше возможностей и он рекомендует перейти на его использование.
      Приложения Delphi 10/10.1  Android также успешно проходят регистрацию через поставщиков услуг (GCM) и на сколько я понял гугл совместимость не будет прикрывать для работоспособности приложений которые уже не обновляют в плеймаркете. Интерфейс на мой взгляд стал намного проще и удобнее с консоли можно спокойно отправлять групповые  и адресные оповещения.
      Что касается возможности отправки оповещений на IOS устройства. Доступно много примеров и библиотек практически для каждой среды разработки кроме (продуктов embarcadero)
      покопавшись в документации нашол статью которая дала понять как переригестрировать токены ios  и получить токен FCM.
      сделал следующе  ios получивший токен спешит зарегистрировать девайс  на вашем сервере скрипт перехватывает и делает регистрацию на серверах гугла  и новый токен мы также записываем в свою базу
      в архиве прикрепляю серверную часть php сделана она чисто для тестирования и  я не рекомендую использовать как рабочий вариант хотя  до рабочего варианта там допилить совсем не много.
      Ниже прикрепляю скрины  лк FCM 
      push.zip



  • Последние посетители   0 пользователей онлайн

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

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