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

HelleR

Пользователи
  • Активность

    4
  • Зарегистрирован

  • Посещение

Информация о HelleR

  • Звание
    Новичок

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. P.S. Приведенный выше класс, вполне рабочий для универсальной гугл аналитики.
  2. Добрые люди подсказали, что GAv4 это совсем не GA4 Firebird, f 4 -ая версия универсальной аналитики, которая мне не подойдет, так как мне нужна аналитика только для приложений. А библиотеки под Firebase нет, только gradle...
  3. Добрый день. Я пытаюсь отправить события из написанного на 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 я не понял. Буду рад любым мыслям, спасибо.
  4. Добрый день. Есть готовое приложение, но для его продвижения, нужно добавить аналитику, желательно Firebase. Или любую другую, из которой можно передать данные о конверсии в google рекламу. Разработано на Delphi 10.4.2, в списке подключенных библиотек есть: - com-google-firebase.firebase-analytics.16.4.0.dex.jar - com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar - com-google-android-gms.play-services-analytics.16.0.8.dex.jar Пытался реализовать как было предложено выше, но не получается. Во время компиляции unit GoogleAnalytics; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, {$IFDEF ANDROID} Androidapi.JNI.Analytics, Androidapi.Helpers, Androidapi.JNI.JavaTypes, // androidapi.JNI.Os, Androidapi.JNI.GraphicsContentViewText, {$ENDIF} FMX.Types; type /// вспомогат. класс для работы с GoogleAnalytics - только андроид! TwGoogleAnalytics=class private FCollectDataPermission: boolean; FGoogleAppId : String; {$IFDEF ANDROID} FTracker : JTracker; FGoogleAId : JString; {$ENDIF} public {$IFDEF ANDROID} JGA : JGoogleAnalytics; property CollectDataPermission: boolean read FCollectDataPermission write FCollectDataPermission; {$ENDIF} constructor Create; procedure SetParams(const aGoogleAppID:string); /// procedure SendControl(const aCtrlDesc:string); procedure SendEvent(const aCat,aAction,aLabel:string; aGValue:Integer); procedure SendException(const aExMessage:string; aFatalFlag:Boolean=false); /// property GoogleAppId:string read FGoogleAppId; end; {var Tr:JTracker; JGA:JGoogleAnalytics; begin implementation constructor TwGoogleAnalytics.Create; begin FGoogleAppId := ''; end; procedure TwGoogleAnalytics.SetParams(const aGoogleAppID:string); begin {$IFDEF ANDROID} CollectDataPermission := true;//(Ini.CollectDataPermission = PERMISSION_YES); // Ошибка, не найден класс Exception class EJNI with message 'Java type JGoogleAnalytics could not be found' // в Androidapi.JNIBridge JGA := TJGoogleAnalytics.JavaClass.getInstance( TAndroidHelper.Context ); /// FGoogleAId := StringToJString(aGoogleAppID); FTracker := JGA.getTracker(FGoogleAid); /// JGA.setDefaultTracker(FTracker); JGA.setDebug(true); /// {$ENDIF} FGoogleAppId:=aGoogleAppID; end; procedure TwGoogleAnalytics.SendControl(const aCtrlDesc:string); begin {$IFDEF ANDROID} FTracker.setAppScreen(StringToJString(aCtrlDesc)); FTracker.sendView; {$ENDIF} end; procedure TwGoogleAnalytics.SendEvent(const aCat,aAction,aLabel:string; aGValue:Integer); begin {$IFDEF ANDROID} FTracker.sendEvent(StringToJString(aCat), StringToJString(aAction),StringToJString(aLabel), TJLong.JavaClass.init(aGValue)); {$ENDIF} end; procedure TwGoogleAnalytics.SendException(const aExMessage:string; aFatalFlag:Boolean=false); begin {$IFDEF ANDROID} FTracker.sendException(StringToJString(aExMessage),aFatalFlag); {$ENDIF} end; end. procedure TForm1.FormCreate(Sender: TObject); begin GA := TwGoogleAnalytics.Create; GA.SetParams('xxx2392xx'); .......... end; Во время выполнения ошибка возникает в Androidapi.JNIBridge // Ошибка, не найден класс Exception class EJNI with message 'Java type JGoogleAnalytics could not be found' // в Androidapi.JNIBridge JGA := TJGoogleAnalytics.JavaClass.getInstance( TAndroidHelper.Context ); Связующий модуль Androidapi.JNI.Analytics подключен, искомый интерфейс есть. JGoogleAnalytics = interface;//com.google.analytics.tracking.android.GoogleAnalytics По всей видимости нет данных в самой библиотеке. Прошу помочь, или любые мысли в направлении как подключить аналитику. Есть библиотека firebase, но непонятно как работать с ее аналитикой. Firebase Push уведомления подключены и работают.
×
×
  • Создать...