Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit bc04a77

Browse files
roeierezbparrishMines
authored andcommitted
[firebase_dynamic_links] support clicking on link while app is running and fix clearing data in dynamic link intent bug. (#1569)
1 parent 70181fb commit bc04a77

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

packages/firebase_dynamic_links/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.4.0+1
2+
3+
* Fixed bug where link persists after starting an app with a Dynamic Link.
4+
* Fixed bug where retrieving a link would fail when app was already running.
5+
16
## 0.4.0
27

38
* Update dependency on firebase_core to 0.4.0.

packages/firebase_dynamic_links/android/src/main/java/io/flutter/plugins/firebasedynamiclinks/FirebaseDynamicLinksPlugin.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.flutter.plugins.firebasedynamiclinks;
22

3+
import android.content.Intent;
34
import android.net.Uri;
45
import androidx.annotation.NonNull;
56
import com.google.android.gms.tasks.OnCompleteListener;
@@ -13,6 +14,7 @@
1314
import io.flutter.plugin.common.MethodChannel;
1415
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
1516
import io.flutter.plugin.common.MethodChannel.Result;
17+
import io.flutter.plugin.common.PluginRegistry;
1618
import io.flutter.plugin.common.PluginRegistry.Registrar;
1719
import java.util.ArrayList;
1820
import java.util.HashMap;
@@ -22,9 +24,20 @@
2224
/** FirebaseDynamicLinksPlugin */
2325
public class FirebaseDynamicLinksPlugin implements MethodCallHandler {
2426
private Registrar registrar;
27+
private Intent latestIntent;
2528

2629
private FirebaseDynamicLinksPlugin(Registrar registrar) {
2730
this.registrar = registrar;
31+
latestIntent = registrar.activity().getIntent();
32+
33+
registrar.addNewIntentListener(
34+
new PluginRegistry.NewIntentListener() {
35+
@Override
36+
public boolean onNewIntent(Intent intent) {
37+
latestIntent = intent;
38+
return false;
39+
}
40+
});
2841
}
2942

3043
public static void registerWith(Registrar registrar) {
@@ -61,8 +74,13 @@ public void onMethodCall(MethodCall call, Result result) {
6174
}
6275

6376
private void handleRetrieveDynamicLink(final Result result) {
77+
if (latestIntent == null) {
78+
result.success(null);
79+
return;
80+
}
81+
6482
FirebaseDynamicLinks.getInstance()
65-
.getDynamicLink(registrar.activity().getIntent())
83+
.getDynamicLink(latestIntent)
6684
.addOnCompleteListener(
6785
registrar.activity(),
6886
new OnCompleteListener<PendingDynamicLinkData>() {
@@ -79,6 +97,8 @@ public void onComplete(@NonNull Task<PendingDynamicLinkData> task) {
7997
androidData.put("minimumVersion", data.getMinimumAppVersion());
8098

8199
dynamicLink.put("android", androidData);
100+
101+
latestIntent = null;
82102
result.success(dynamicLink);
83103
return;
84104
}

packages/firebase_dynamic_links/example/lib/main.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class _MainScreenState extends State<_MainScreen> with WidgetsBindingObserver {
3636
@override
3737
void initState() {
3838
super.initState();
39+
_retrieveDynamicLink();
3940
WidgetsBinding.instance.addObserver(this);
4041
}
4142

packages/firebase_dynamic_links/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: firebase_dynamic_links
22
description: Flutter plugin for Google Dynamic Links for Firebase, an app solution for creating
33
and handling links across multiple platforms.
4-
version: 0.4.0
4+
version: 0.4.0+1
55

66
author: Flutter Team <[email protected]>
77
homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_dynamic_links

0 commit comments

Comments
 (0)