Flutter-当应用程序处于终止模式时,Firebase动态链接不工作

1l5u6lss  于 2022-11-25  发布在  Flutter
关注(0)|答案(1)|浏览(118)

我已经在Flutter应用程序中集成了Firebase动态链接,以打开和导航应用程序用户到应用程序中的特定屏幕。
首先,我在pubspec.yaml文件中添加了以下插件:

firebase_dynamic_links: ^5.0.5

然后,我创建了一个单独的类来处理相关的东西,如下所示:

class DynamicLinkService {
  late BuildContext context;

  FirebaseDynamicLinks dynamicLinks = FirebaseDynamicLinks.instance;

  Future<void> initDynamicLinks(BuildContext context) async {
    this.context = context;
    dynamicLinks.onLink.listen((dynamicLinkData) {
      var dynamicLink=dynamicLinkData.link.toString();
      if (dynamicLink.isNotEmpty &&
          dynamicLink.startsWith(ApiConstants.baseUrl) &&
          dynamicLink.contains("?")) {
          //Getting data here and navigating...
          ...
          ...
          ...
      } 
    }).onError((error) {
      print("This is error >>> "+error.message);
    });
  }
}

现在,我在home_screen中初始化深度链接,如下所示:

final DynamicLinkService _dynamicLinkService = DynamicLinkService();

然后在initState()中调用以下方法

@override
  void initState() {
    SchedulerBinding.instance.addPostFrameCallback((_) async {
      await _dynamicLinkService.initDynamicLinks(context);
    });
  }
  • 这就像一个魅力!*我的应用程序是在最近的模式或在后台模式。
    但问题是当应用程序关闭/终止时,单击动态链接仅打开应用程序,但无法导航。

可能是什么问题?提前感谢。

eoxn13cs

eoxn13cs1#

让我回答我自己的问题,它可能对某人有用!
因此,在上面的代码中,我忘记添加代码来处理动态链接,而应用程序处于关闭/杀死模式。
我们需要单独添加以下代码:

//this is when the app is in closed/kill mode
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
if (initialLink != null) {
  handleDynamicLink(initialLink);
}

因此,最终代码如下所示:

//this is when the app is in closed/kill mode
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
if (initialLink != null) {
  handleDynamicLink(initialLink);
}

//this is when the app is in recent/background mode
dynamicLinks.onLink.listen((dynamicLinkData) {
  handleDynamicLink(dynamicLinkData);
}).onError((error) {
  print("This is error >>> "+error.message);
});

它现在就像一个护身符一样起作用了!就这样。

相关问题