当我在我的 flutter 中使用 firebase 动态链接时,它会打开应用程序,但在应用程序被杀死时无法获取链接

问题描述

当我的应用程序在后台运行时,我得到链接并且它工作正常但是当我的应用程序被杀死时,当我从深层链接打开应用程序时我没有得到链接

这是我获取链接代码

这是我编辑过的代码

 void initDynamicLinks() async {
    FirebaseDynamicLinks.instance.onLink(
        onSuccess: (PendingDynamicLinkData dynamicLink) async {
          final Uri deepLink = dynamicLink?.link;

          if (deepLink != null) {
            print('---new deep link onLink**********************************${deepLink}');
            Fluttertoast.showToast(
                msg: "onLink handle    ${deepLink}",toastLength: Toast.LENGTH_SHORT,gravity: ToastGravity.CENTER,timeInSecForIosWeb: 1,backgroundColor: Colors.red,textColor: Colors.white,fontSize: 16.0
            );
            //Navigator.pushNamed(context,deepLink.path);
          }
        },onError: (OnLinkErrorException e) async {
          print('onLinkError');
          print(e.message);
        }
    );

    final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getinitialLink();
    final Uri deepLink = data?.link;

    if (deepLink != null) {
      print('---new deep found************************************************');
      Fluttertoast.showToast(
          msg: "get?Initial handle    ${deepLink}",fontSize: 16.0
      );
     // Navigator.pushNamed(context,deepLink.path);
    }
  }

我为 init 调用了 initPlatformState(),当我的应用程序在后台运行时它工作正常。

当我的应用程序强制停止时如何获取 url

现在同样的问题 onLink 工作但 getinitialLink 在第一次从 url 打开应用程序时不起作用

解决方法

您的 FirebaseDynamicLinks.instance.getInitialLink();FirebaseDynamicLinks.instance.onLink 逻辑在哪里?

您似乎只是在应用程序处于后台时通过 stream.listen 方法处理链接,但您发布的代码并未显示应用程序终止时处理链接的逻辑。

,

我为 getInitialLink 设置了 2 秒延迟,然后它就起作用了。

,

基本上,您需要在启动时添加 2-3 秒延迟 + 您可以处理 (onSuccess) 之外的深层链接。它终于对我有用了! 检查下面的链接 https://betterprogramming.pub/deep-linking-in-flutter-with-firebase-dynamic-links-8a4b1981e1eb