diff --git a/packages/firebase_dynamic_links/CHANGELOG.md b/packages/firebase_dynamic_links/CHANGELOG.md index a6be81ecc1d3..1d026828a148 100644 --- a/packages/firebase_dynamic_links/CHANGELOG.md +++ b/packages/firebase_dynamic_links/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.4.0+1 + +* Fixed bug where link persists after starting an app with a Dynamic Link. +* Fixed bug where retrieving a link would fail when app was already running. + ## 0.4.0 * Update dependency on firebase_core to 0.4.0. diff --git a/packages/firebase_dynamic_links/android/src/main/java/io/flutter/plugins/firebasedynamiclinks/FirebaseDynamicLinksPlugin.java b/packages/firebase_dynamic_links/android/src/main/java/io/flutter/plugins/firebasedynamiclinks/FirebaseDynamicLinksPlugin.java index 91fe3a06ed27..463ceff35a15 100644 --- a/packages/firebase_dynamic_links/android/src/main/java/io/flutter/plugins/firebasedynamiclinks/FirebaseDynamicLinksPlugin.java +++ b/packages/firebase_dynamic_links/android/src/main/java/io/flutter/plugins/firebasedynamiclinks/FirebaseDynamicLinksPlugin.java @@ -1,5 +1,6 @@ package io.flutter.plugins.firebasedynamiclinks; +import android.content.Intent; import android.net.Uri; import androidx.annotation.NonNull; import com.google.android.gms.tasks.OnCompleteListener; @@ -13,6 +14,7 @@ import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.MethodChannel.MethodCallHandler; import io.flutter.plugin.common.MethodChannel.Result; +import io.flutter.plugin.common.PluginRegistry; import io.flutter.plugin.common.PluginRegistry.Registrar; import java.util.ArrayList; import java.util.HashMap; @@ -22,9 +24,20 @@ /** FirebaseDynamicLinksPlugin */ public class FirebaseDynamicLinksPlugin implements MethodCallHandler { private Registrar registrar; + private Intent latestIntent; private FirebaseDynamicLinksPlugin(Registrar registrar) { this.registrar = registrar; + latestIntent = registrar.activity().getIntent(); + + registrar.addNewIntentListener( + new PluginRegistry.NewIntentListener() { + @Override + public boolean onNewIntent(Intent intent) { + latestIntent = intent; + return false; + } + }); } public static void registerWith(Registrar registrar) { @@ -61,8 +74,13 @@ public void onMethodCall(MethodCall call, Result result) { } private void handleRetrieveDynamicLink(final Result result) { + if (latestIntent == null) { + result.success(null); + return; + } + FirebaseDynamicLinks.getInstance() - .getDynamicLink(registrar.activity().getIntent()) + .getDynamicLink(latestIntent) .addOnCompleteListener( registrar.activity(), new OnCompleteListener() { @@ -79,6 +97,8 @@ public void onComplete(@NonNull Task task) { androidData.put("minimumVersion", data.getMinimumAppVersion()); dynamicLink.put("android", androidData); + + latestIntent = null; result.success(dynamicLink); return; } diff --git a/packages/firebase_dynamic_links/example/lib/main.dart b/packages/firebase_dynamic_links/example/lib/main.dart index 43d16e9537e2..443b79d986db 100644 --- a/packages/firebase_dynamic_links/example/lib/main.dart +++ b/packages/firebase_dynamic_links/example/lib/main.dart @@ -36,6 +36,7 @@ class _MainScreenState extends State<_MainScreen> with WidgetsBindingObserver { @override void initState() { super.initState(); + _retrieveDynamicLink(); WidgetsBinding.instance.addObserver(this); } diff --git a/packages/firebase_dynamic_links/pubspec.yaml b/packages/firebase_dynamic_links/pubspec.yaml index f87e00d1f549..739e30b40157 100644 --- a/packages/firebase_dynamic_links/pubspec.yaml +++ b/packages/firebase_dynamic_links/pubspec.yaml @@ -1,7 +1,7 @@ name: firebase_dynamic_links description: Flutter plugin for Google Dynamic Links for Firebase, an app solution for creating and handling links across multiple platforms. -version: 0.4.0 +version: 0.4.0+1 author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_dynamic_links