在 Delphi 10.4.2 中使用 Google Analytics GA4
Working with Google Analytics GA4 in Delphi 10.4.2
我正在尝试将事件从我的移动应用程序发送到 Google 分析。
外部图书馆连接:
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 : 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" />
要使用 Java class,使用以下 class com-google-android-gms.play-services-analytics-impl.16.0.8.jar
:
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.
但是没有数据用于分析。图书馆有可能已经过时了。但是我不知道如何下载一个新的,在 SDK 的描述中有一个选项只能使用 gradle。据我所知,这在 Delphi 中是不可能的。我会等待任何建议。
在深入研究文档之后。 GoogleAnalytics 我找到了这个。
此代码用于通用分析而不是 GA4,因此如果您尝试使用它向 GA4 发送数据,它将无法正常工作。
package com.example;
class MyApp extends Application {
public static GoogleAnalytics analytics;
public static Tracker tracker;
@Overwrite
public void onCreate() {
analytics = GoogleAnalytics.getInstance(this);
analytics.setLocalDispatchPeriod(1800);
tracker = analytics.newTracker("UA-000-1"); // Replace with actual tracker id
tracker.enableExceptionReporting(true);
tracker.enableAdvertisingIdCollection(true);
tracker.enableAutoActivityTracking(true);
}
}
我向团队发送了 ping 消息,以了解是否有此的 GA4 版本。
要将数据发送到 GA4,您需要使用 Firebase SDK,它将事件发送到 Google Analytics https://firebase.google.com/docs/analytics
logcat 中的 GAv4 与 GA4 无关,而是 Universal AnalyticsAPI 的第 4 版
我正在尝试将事件从我的移动应用程序发送到 Google 分析。
外部图书馆连接:
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 : 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" />
要使用 Java class,使用以下 class com-google-android-gms.play-services-analytics-impl.16.0.8.jar
:
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.
但是没有数据用于分析。图书馆有可能已经过时了。但是我不知道如何下载一个新的,在 SDK 的描述中有一个选项只能使用 gradle。据我所知,这在 Delphi 中是不可能的。我会等待任何建议。
在深入研究文档之后。 GoogleAnalytics 我找到了这个。
此代码用于通用分析而不是 GA4,因此如果您尝试使用它向 GA4 发送数据,它将无法正常工作。
package com.example;
class MyApp extends Application {
public static GoogleAnalytics analytics;
public static Tracker tracker;
@Overwrite
public void onCreate() {
analytics = GoogleAnalytics.getInstance(this);
analytics.setLocalDispatchPeriod(1800);
tracker = analytics.newTracker("UA-000-1"); // Replace with actual tracker id
tracker.enableExceptionReporting(true);
tracker.enableAdvertisingIdCollection(true);
tracker.enableAutoActivityTracking(true);
}
}
我向团队发送了 ping 消息,以了解是否有此的 GA4 版本。
要将数据发送到 GA4,您需要使用 Firebase SDK,它将事件发送到 Google Analytics https://firebase.google.com/docs/analytics logcat 中的 GAv4 与 GA4 无关,而是 Universal AnalyticsAPI 的第 4 版