From a29adaa0b3f08fd9da8c9d694b2d3b3654d14d4e Mon Sep 17 00:00:00 2001 From: Zhen Qiu Date: Thu, 23 Jan 2020 14:51:38 -0800 Subject: [PATCH 1/2] Keep a local registrar to get activity for foreground actions for v1 embedder. --- .../firebaseanalytics/FirebaseAnalyticsPlugin.java | 14 +++++++++++--- .../example/android/gradle.properties | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/firebase_analytics/firebase_analytics/android/src/main/java/io/flutter/plugins/firebaseanalytics/FirebaseAnalyticsPlugin.java b/packages/firebase_analytics/firebase_analytics/android/src/main/java/io/flutter/plugins/firebaseanalytics/FirebaseAnalyticsPlugin.java index 03b5f4166e45..c918b28be554 100755 --- a/packages/firebase_analytics/firebase_analytics/android/src/main/java/io/flutter/plugins/firebaseanalytics/FirebaseAnalyticsPlugin.java +++ b/packages/firebase_analytics/firebase_analytics/android/src/main/java/io/flutter/plugins/firebaseanalytics/FirebaseAnalyticsPlugin.java @@ -25,14 +25,22 @@ public class FirebaseAnalyticsPlugin implements MethodCallHandler, FlutterPlugin, ActivityAware { private FirebaseAnalytics firebaseAnalytics; private MethodChannel methodChannel; + // Only set registrar for v1 embedder. + private PluginRegistry.Registrar registrar; + // Only set activity for v2 embedder. Always access activity from getActivity() method. private Activity activity; public static void registerWith(PluginRegistry.Registrar registrar) { FirebaseAnalyticsPlugin instance = new FirebaseAnalyticsPlugin(); - instance.setActivity(registrar.activity()); + instance.registrar = registrar; instance.onAttachedToEngine(registrar.context(), registrar.messenger()); } + // Only access activity with this method. + private Activity getActivity() { + return registrar != null ? registrar.activity() : activity; + } + @Override public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { onAttachedToEngine( @@ -120,7 +128,7 @@ private void handleSetUserId(MethodCall call, Result result) { } private void handleSetCurrentScreen(MethodCall call, Result result) { - if (activity == null) { + if (getActivity() == null) { result.error("no_activity", "handleSetCurrentScreen requires a foreground activity", null); return; } @@ -128,7 +136,7 @@ private void handleSetCurrentScreen(MethodCall call, Result result) { final String screenName = call.argument("screenName"); final String screenClassOverride = call.argument("screenClassOverride"); - firebaseAnalytics.setCurrentScreen(activity, screenName, screenClassOverride); + firebaseAnalytics.setCurrentScreen(getActivity(), screenName, screenClassOverride); result.success(null); } diff --git a/packages/firebase_analytics/firebase_analytics/example/android/gradle.properties b/packages/firebase_analytics/firebase_analytics/example/android/gradle.properties index 08f2b5f91bff..d2032bce8be6 100755 --- a/packages/firebase_analytics/firebase_analytics/example/android/gradle.properties +++ b/packages/firebase_analytics/firebase_analytics/example/android/gradle.properties @@ -1,3 +1,4 @@ org.gradle.jvmargs=-Xmx1536M android.enableJetifier=true android.useAndroidX=true +android.enableR8=true From 06ebc212b3c5ac5c218843caeb8c0782c3815a21 Mon Sep 17 00:00:00 2001 From: Zhen Qiu Date: Thu, 23 Jan 2020 15:38:42 -0800 Subject: [PATCH 2/2] Modify the pubsepc and changelog --- packages/firebase_analytics/firebase_analytics/CHANGELOG.md | 4 ++++ packages/firebase_analytics/firebase_analytics/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/firebase_analytics/firebase_analytics/CHANGELOG.md b/packages/firebase_analytics/firebase_analytics/CHANGELOG.md index 34cde40210e9..cb6b7232f1ca 100644 --- a/packages/firebase_analytics/firebase_analytics/CHANGELOG.md +++ b/packages/firebase_analytics/firebase_analytics/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.0.10 + +* Keep a local registrar to get activity for foreground actions for v1 embedder. + ## 5.0.9 * Remove the deprecated `author:` field from pubspec.yaml diff --git a/packages/firebase_analytics/firebase_analytics/pubspec.yaml b/packages/firebase_analytics/firebase_analytics/pubspec.yaml index d878a9e31a57..fd9dae9104f6 100755 --- a/packages/firebase_analytics/firebase_analytics/pubspec.yaml +++ b/packages/firebase_analytics/firebase_analytics/pubspec.yaml @@ -2,7 +2,7 @@ name: firebase_analytics description: Flutter plugin for Google Analytics for Firebase, an app measurement solution that provides insight on app usage and user engagement on Android and iOS. homepage: https://github.com/FirebaseExtended/flutterfire/tree/master/packages/firebase_analytics/firebase_analytics -version: 5.0.9 +version: 5.0.10 flutter: plugin: