FlutterFire动态链接从未被应用程序接收

6ojccjat  于 2023-03-19  发布在  Flutter
关注(0)|答案(1)|浏览(119)

我正在使用Firebase为我的Flutter应用程序(Android,但最终将在iOS上实现)实现电子邮件链接登录。
我最终成功地向用户发送了一封电子邮件,其中包含一个动态链接,当你点击它时,它会打开应用程序,但是,应用程序内永远不会收到这个动态链接(.getInitialLink()总是null)
我的main()函数如下所示:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );

  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
  debugPrint('A ${initialLink?.link}');
  if (initialLink != null) {
    final Uri deepLink = initialLink.link;
    if (FirebaseAuth.instance.isSignInWithEmailLink(deepLink.path)) {
      debugPrint('A signed in with email link');
    }
  }

  FirebaseDynamicLinks.instance.onLink.listen(
    (pendingDynamicLinkData) {
      debugPrint('B ${pendingDynamicLinkData.link}');
      final Uri deepLink = pendingDynamicLinkData.link;
      if (FirebaseAuth.instance.isSignInWithEmailLink(deepLink.path)) {
        debugPrint('B signed in with email link');
      }
    },
  ).onError((error) {
    debugPrint('ERROR: $error');
  });

  runApp(const App());
}

.getInitialLink()始终为空,并且.onLink从不发出任何类型的数据。
依赖关系:

...
- firebase_auth 4.2.10 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface flutter meta]
- firebase_core 2.7.1 [firebase_core_platform_interface firebase_core_web flutter meta]
- firebase_dynamic_links 5.0.16 [firebase_core firebase_core_platform_interface firebase_dynamic_links_platform_interface flutter meta plugin_platform_interface]
...

flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.7.6, on Manjaro Linux 6.1.12-1-MANJARO, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2022.1)
[✓] Connected device (3 available)
[✓] HTTP Host Availability

• No issues found!

我已经在Flutter的专用Discord服务器上请求帮助,但是由于该服务器的性质,所有你的问题都被淹没了,没有人得到回答。
当我试图在谷歌上搜索这个问题的答案时,我发现了几个关于这个主题的GitHub问题,但都是关于iOS的,没有一个得到了明确的答案(由于不活动,它们都被自动关闭了)。
我对调试这些SDK有点厌倦了,这对我的工作效率是一个真实的的杀手
如果有人能提供哪怕是最微小的建议,我将不胜感激

wkyowqbh

wkyowqbh1#

过了很久才解决
由于某种原因,firebase_dynamic_links又开始工作了,但仍然没有通过

if (FirebaseAuth.instance.isSignInWithEmailLink(deepLink.path)) {

核对
原来deepLink.path不包括oobCode这样的路径参数(非常感谢VSCode调试工具帮助我找到这个参数)
我把它改成了一个简单的deepLink.toString(),现在它可以工作了。

相关问题