FirebaseDynamicLinks.instance.getInitialLink() 在 Android 上总是返回 null
Posted
技术标签:
【中文标题】FirebaseDynamicLinks.instance.getInitialLink() 在 Android 上总是返回 null【英文标题】:FirebaseDynamicLinks.instance.getInitialLink() always returning null on Android 【发布时间】:2020-03-23 16:47:22 【问题描述】:我使用 firebase_dynamic_links 进行 passwordless login 与 firebase 并且 getInitialLink() 总是返回 null 版本 0.5.0+8。 如果我使用 version 0.4.0+4 和 retrieveDynamicLink() 而不是 getInitialLink() 它可以正常工作。
由于它在 0.4.0+4 版本中运行,我认为问题不在于 Firebase 设置。 这就是我发送电子邮件的方式:
final FirebaseAuth user = FirebaseAuth.instance;
try
user.sendSignInWithEmailLink(
email: _email,
androidInstallIfNotAvailable: true,
iosBundleID: "com.mydomain.myappname",
androidMinimumVersion: "16",
androidPackageName: "com.mydomain.myappname",
url: "https://myAppName.page.link/fJc4",
handleCodeInApp: true);
catch (e)
_showDialog(e.toString());
return false;
然后去检索它:
@override
void didChangeAppLifecycleState(AppLifecycleState state)
if (state == AppLifecycleState.resumed)
_retrieveDynamicLink();
Future<void> _retrieveDynamicLink() async
final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink();
print('data == ' + data.toString());
final Uri deepLink = data?.link;
print(deepLink.toString());
if (deepLink != null)
_link = deepLink.toString();
_signInWithEmailAndLink();
return deepLink.toString();
使用 getInitialLink() 的新版本中的数据始终为 null。它适用于具有 retrieveDynamicLink() 的先前版本。
我创建了一个新项目只是为了对其进行测试,但问题仍然存在。除了视图文件之外,我对该项目所做的唯一其他更改是将 firebase_auth: ^0.15.0+1 添加到 pubspc.yaml
医生总结(要查看所有详细信息,请运行 flutter doctor -v):[√]
Flutter(Channel stable,v1.9.1+hotfix.6,在 Microsoft Windows 上 [版本 10.0.17763.864],语言环境 pt-BR)
[√] Android 工具链 - 为 Android 设备开发(Android SDK 版本 28.0.3)
[√]Android Studio(3.5版)
[!] VS Code(版本 1.40.0)X Flutter 扩展未安装;从https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter安装
[√] 已连接设备(1 个可用)
!医生发现了 1 个类别的问题。
感谢任何帮助。
【问题讨论】:
你找到解决办法了吗? @BenjaminSmith 不。他们也没有回答。我只是使用 0.4.0+4 版本,一切正常。 检查这个答案,它可能会有所帮助。这对我有用:***.com/a/67904367/6661043 【参考方案1】: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);
);
【讨论】:
以上是关于FirebaseDynamicLinks.instance.getInitialLink() 在 Android 上总是返回 null的主要内容,如果未能解决你的问题,请参考以下文章