Dpe*_*nha 7 firebase-authentication flutter firebase-dynamic-links
我正在使用firebase_dynamic_links使用firebase进行无密码登录,并且getInitialLink()在版本 0.5.0+8上始终返回null。\n如果我使用版本 0.4.0+4并retrieveDynamicLink()而不是getInitialLink()它工作正常。
\n由于它在 0.4.0+4 版本中工作,我认为问题不在于 Firebase 设置。\n这就是我发送电子邮件的方式:
\nfinal 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 }\nRun 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 }\nRun Code Online (Sandbox Code Playgroud)\n在使用getInitialLink()的新版本上,数据始终为null。它适用于以前的版本与retrieveDynamicLink()。
\n我创建了一个新项目只是为了测试它,但问题仍然存在。除了视图文件之外,我对项目所做的唯一其他更改是将firebase_auth: ^0.15.0+1添加到pubspc.yaml
\n\n\nDoctor 摘要(要查看所有详细信息,请运行 flutter doctor -v): [\xe2\x88\x9a]
\nFlutter(通道稳定,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小智 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)