Skip to content

Commit

Permalink
Add android app id and ios bundle id in GA metrics (#8177)
Browse files Browse the repository at this point in the history
* add android and ios app id in GA metrics

* Update _analytics_web.dart

* clean item name

* update item names

* lint

* Update metrics.dart

* Update pubspec.yaml
  • Loading branch information
hangyujin authored Oct 2, 2024
1 parent 570f4c8 commit 7acdb04
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import 'package:flutter/material.dart';

import '../../shared/analytics/analytics.dart' as ga;
import '../../shared/analytics/constants.dart' as gac;
import '../../shared/analytics/metrics.dart';
import '../../shared/feature_flags.dart';
import '../../shared/globals.dart';
import '../../shared/primitives/utils.dart';
Expand Down Expand Up @@ -318,6 +319,13 @@ class DeepLinksController extends DisposableController
buildVariant: variant,
);
androidAppLinks[selectedAndroidVariantIndex.value] = result;
ga.impression(
gac.deeplink,
gac.AnalyzeFlutterProject.androidAppLinksSettingsLoaded.name,
screenMetricsProvider: () => DeepLinkScreenMetrics(
androidAppId: result.applicationId,
),
);
} catch (_) {
ga.select(
gac.deeplink,
Expand Down Expand Up @@ -349,6 +357,13 @@ class DeepLinksController extends DisposableController
target: target,
);
iosLinks[selectedIosConfigurationIndex.value] = result;
ga.impression(
gac.deeplink,
gac.AnalyzeFlutterProject.iosUniversalLinkSettingsLoaded.name,
screenMetricsProvider: () => DeepLinkScreenMetrics(
iosBundleId: result.bundleIdentifier,
),
);
} catch (_) {
pagePhase.value = PagePhase.validationErrorPage;
}
Expand Down
24 changes: 24 additions & 0 deletions packages/devtools_app/lib/src/shared/analytics/_analytics_web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ extension type GtagEventDevTools._(JSObject _) implements GtagEvent {
int? root_set_count, // metric10
int? row_count, // metric11
int? inspector_tree_controller_id, // metric12
String? android_app_id, //metric13
String? ios_bundle_id, //metric14
});

// Custom dimensions:
Expand Down Expand Up @@ -139,6 +141,8 @@ extension type GtagEventDevTools._(JSObject _) implements GtagEvent {
external int? get root_set_count;
external int? get row_count;
external int? get inspector_tree_controller_id;
external String? get android_app_id;
external String? get ios_bundle_id;
}

extension type GtagExceptionDevTools._(JSObject _) implements GtagException {
Expand Down Expand Up @@ -191,6 +195,8 @@ extension type GtagExceptionDevTools._(JSObject _) implements GtagException {
int? root_set_count, // metric10
int? row_count, // metric11
int? inspector_tree_controller_id, // metric12
String? android_app_id, //metric13
String? ios_bundle_id, //metric14
});

// Custom dimensions:
Expand Down Expand Up @@ -221,6 +227,8 @@ extension type GtagExceptionDevTools._(JSObject _) implements GtagException {
external int? get root_set_count;
external int? get row_count;
external int? get inspector_tree_controller_id;
external String? get android_app_id;
external String? get ios_bundle_id;
}

// This cannot be a factory constructor in the [GtagEventDevTools] class due to
Expand Down Expand Up @@ -292,6 +300,13 @@ GtagEventDevTools _gtagEvent({
inspector_tree_controller_id: screenMetrics is InspectorScreenMetrics
? screenMetrics.inspectorTreeControllerId
: null,
// [DeepLinkScreenMetrics]
android_app_id: screenMetrics is DeepLinkScreenMetrics
? screenMetrics.androidAppId
: null,
ios_bundle_id: screenMetrics is DeepLinkScreenMetrics
? screenMetrics.iosBundleId
: null,
);
}

Expand Down Expand Up @@ -358,6 +373,13 @@ GtagExceptionDevTools _gtagException(
inspector_tree_controller_id: screenMetrics is InspectorScreenMetrics
? screenMetrics.inspectorTreeControllerId
: null,
// [DeepLinkScreenMetrics]
android_app_id: screenMetrics is DeepLinkScreenMetrics
? screenMetrics.androidAppId
: null,
ios_bundle_id: screenMetrics is DeepLinkScreenMetrics
? screenMetrics.iosBundleId
: null,
);
}

Expand Down Expand Up @@ -887,6 +909,8 @@ ua.Event _uaEventFromGtagEvent(GtagEventDevTools gtagEvent) {
rootSetCount: gtagEvent.root_set_count,
rowCount: gtagEvent.row_count,
inspectorTreeControllerId: gtagEvent.inspector_tree_controller_id,
androidAppId: gtagEvent.android_app_id,
iosBundleId: gtagEvent.ios_bundle_id,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ enum AnalyzeFlutterProject {
/// Used for recording the time spent in loading iOS Links.
loadIosLinks,

/// Android App links settings are loaded.
androidAppLinksSettingsLoaded,

/// iOS Universal Links settings are loaded.
iosUniversalLinkSettingsLoaded,

/// App Links are loaded and there is at least one link.
flutterHasAppLinks,

Expand Down
13 changes: 13 additions & 0 deletions packages/devtools_app/lib/src/shared/analytics/metrics.dart
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,16 @@ class InspectorScreenMetrics extends ScreenAnalyticsMetrics {
/// The id of the [InspectorTreeController], for which this event is tracking.
final int? inspectorTreeControllerId;
}

class DeepLinkScreenMetrics extends ScreenAnalyticsMetrics {
DeepLinkScreenMetrics({
this.androidAppId,
this.iosBundleId,
});

/// The Android app id of the Flutter project.
final String? androidAppId;

/// The iOS bundle id of the Flutter project.
final String? iosBundleId;
}
2 changes: 1 addition & 1 deletion packages/devtools_app/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ dependencies:
stack_trace: ^1.12.0
stream_channel: ^2.1.1
string_scanner: ^1.1.0
unified_analytics: ^6.1.3
unified_analytics: ^6.1.4
vm_service: ^14.2.5
vm_service_protos: ^1.0.0
vm_snapshot_analysis: ^0.7.6
Expand Down

0 comments on commit 7acdb04

Please sign in to comment.