From 941daf656612eab24294c73cbceb60281a6b323c Mon Sep 17 00:00:00 2001 From: Michael Bui <25263378+MaikuB@users.noreply.github.com> Date: Wed, 12 Aug 2020 14:11:50 +1000 Subject: [PATCH 1/3] fix onLaunch being called again when resuming an application from recents screen --- packages/firebase_messaging/CHANGELOG.md | 4 ++++ .../firebasemessaging/FirebaseMessagingPlugin.java | 9 +++++++-- packages/firebase_messaging/pubspec.yaml | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/firebase_messaging/CHANGELOG.md b/packages/firebase_messaging/CHANGELOG.md index 3de0cddde0f3..902c7adeba50 100644 --- a/packages/firebase_messaging/CHANGELOG.md +++ b/packages/firebase_messaging/CHANGELOG.md @@ -1,3 +1,7 @@ +## 7.0.0-dev.2 + +* Fix `onLaunch` being called again when resuming an application on Android from the Recents screen + ## 7.0.0-dev.1 * Depend on `firebase_core` pre-release versions and migrate plugin to use `firebase_core` native SDK versioning features; diff --git a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java index d475b9e0a3b8..2c2ca8c8861b 100644 --- a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java +++ b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java @@ -192,8 +192,9 @@ public void onComplete(@NonNull Task task) { channel.invokeMethod("onToken", task.getResult().getToken()); } }); - if (mainActivity != null) { - sendMessageFromIntent("onLaunch", mainActivity.getIntent()); + Intent intent = mainActivity.getIntent(); + if (mainActivity != null && !launchedActivityFromHistory(intent)) { + sendMessageFromIntent("onLaunch", intent); } result.success(null); } else if ("subscribeToTopic".equals(call.method)) { @@ -288,6 +289,10 @@ public void run() { } } + private static boolean launchedActivityFromHistory(Intent intent) { + return intent != null && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY; + } + @Override public boolean onNewIntent(Intent intent) { boolean res = sendMessageFromIntent("onResume", intent); diff --git a/packages/firebase_messaging/pubspec.yaml b/packages/firebase_messaging/pubspec.yaml index 4fc5f71be84f..a6420e8e4f34 100644 --- a/packages/firebase_messaging/pubspec.yaml +++ b/packages/firebase_messaging/pubspec.yaml @@ -2,7 +2,7 @@ name: firebase_messaging description: Flutter plugin for Firebase Cloud Messaging, a cross-platform messaging solution that lets you reliably deliver messages on Android and iOS. homepage: https://github.com/FirebaseExtended/flutterfire/tree/master/packages/firebase_messaging -version: 7.0.0-dev.1 +version: 7.0.0-dev.2 flutter: plugin: From 486a2d7af9e9e82dc28a6c29b5cb96ea7bbbd5cf Mon Sep 17 00:00:00 2001 From: Michael Bui <25263378+MaikuB@users.noreply.github.com> Date: Wed, 12 Aug 2020 14:35:45 +1000 Subject: [PATCH 2/3] fix formatting of Java code --- .../plugins/firebasemessaging/FirebaseMessagingPlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java index 2c2ca8c8861b..e78a0a135292 100644 --- a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java +++ b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java @@ -290,7 +290,9 @@ public void run() { } private static boolean launchedActivityFromHistory(Intent intent) { - return intent != null && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY; + return intent != null + && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) + == Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY; } @Override From 1a710147e369f50218fc96f4973ff3628a1f7ec4 Mon Sep 17 00:00:00 2001 From: Michael Bui <25263378+MaikuB@users.noreply.github.com> Date: Fri, 11 Sep 2020 22:43:40 +1000 Subject: [PATCH 3/3] relocate code for getting intent from activity after applying null check --- .../plugins/firebasemessaging/FirebaseMessagingPlugin.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java index e78a0a135292..d57266e34df9 100644 --- a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java +++ b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java @@ -192,9 +192,8 @@ public void onComplete(@NonNull Task task) { channel.invokeMethod("onToken", task.getResult().getToken()); } }); - Intent intent = mainActivity.getIntent(); - if (mainActivity != null && !launchedActivityFromHistory(intent)) { - sendMessageFromIntent("onLaunch", intent); + if (mainActivity != null && !launchedActivityFromHistory(mainActivity.getIntent())) { + sendMessageFromIntent("onLaunch", mainActivity.getIntent()); } result.success(null); } else if ("subscribeToTopic".equals(call.method)) {