FirebaseDynamicLinks.instance.getInitialLink() 在 Android 上始终返回 null

Dpe*_*nha 7 firebase-authentication flutter firebase-dynamic-links

我正在使用firebase_dynamic_links使用firebase进行无密码登录,并且getInitialLink()版本 0.5.0+8上始终返回null。\n如果我使用版本 0.4.0+4retrieveDynamicLink()而不是getInitialLink()它工作正常。

\n

由于它在 0.4.0+4 版本中工作,我认为问题不在于 Firebase 设置。\n这就是我发送电子邮件的方式:

\n
final FirebaseAuth user = FirebaseAuth.instance;\n    try {\n      user.sendSignInWithEmailLink(\n          email: _email,\n          androidInstallIfNotAvailable: true,\n          iOSBundleID: "com.mydomain.myappname",\n          androidMinimumVersion: "16",\n          androidPackageName: "com.mydomain.myappname",\n          url: "https://myAppName.page.link/fJc4",\n          handleCodeInApp: true);\n    } catch (e) {\n      _showDialog(e.toString());\n      return false;\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

然后检索它:

\n
@override\n  void didChangeAppLifecycleState(AppLifecycleState state) {\n    if (state == AppLifecycleState.resumed) {\n      _retrieveDynamicLink();\n    }\n  }\n\n  Future<void> _retrieveDynamicLink() async {\n    final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink();\n    print(\'data == \' + data.toString());\n\n    final Uri deepLink = data?.link;\n    print(deepLink.toString());\n\n    if (deepLink != null) {\n      _link = deepLink.toString();\n      _signInWithEmailAndLink();\n    }\n    return deepLink.toString();\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

在使用getInitialLink()的新版本上,数据始终为null。它适用于以前的版本与retrieveDynamicLink()

\n

我创建了一个新项目只是为了测试它,但问题仍然存在。除了视图文件之外,我对项目所做的唯一其他更改是将firebase_auth: ^0.15.0+1添加到pubspc.yaml

\n
\n

Doctor 摘要(要查看所有详细信息,请运行 flutter doctor -v): [\xe2\x88\x9a]

\n

Flutter(通道稳定,v1.9.1+hotfix.6,在 Microsoft Windows\n[版本 10.0.17763.864],区域设置 pt-BR)

\n

[\xe2\x88\x9a] Android 工具链 - 为 Android 设备开发(Android SDK 版本 28.0.3)

\n

[\xe2\x88\x9a] Android Studio(3.5 版)

\n

[!] VS Code(版本 1.40.0)X Flutter 扩展未安装;安装自从https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

\n

[\xe2\x88\x9a] 连接的设备(1 个可用)

\n

!医生发现了 1 类问题。

\n
\n

任何帮助表示赞赏。

\n

小智 7

getInitialLink() 仅在通过动态链接打开时有效(请参阅插件文档),而在应用程序处于活动状态或在后台时无效(为此您需要调用 onLink)。

  void initDynamicLinks() async {
    final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink();
    final Uri deepLink = data?.link;    if (deepLink != null) {
      Navigator.pushNamed(context, deepLink.path);
    }

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

        if (deepLink != null) {
          Navigator.pushNamed(context, deepLink.path);
        }
      },
      onError: (OnLinkErrorException e) async {
        print('onLinkError');
        print(e.message);
      }
    );
  }
Run Code Online (Sandbox Code Playgroud)


Moh*_*far 6

请您可以使用此插件代替app_links

因为firebase_dynamic_links目前有错误。