我正在将 firebase_dynamic_links 用于具有Firebase的无密码登录,并且 getInitialLink()始终返回 null 版本0.5.0 + 8 。 如果我使用版本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(),数据始终为空。它可以在以前的版本中使用 retrieveDynamicLink()。
我创建了一个新项目只是为了对其进行测试,问题仍然存在。除了查看文件,我对项目进行的唯一其他更改是将 firebase_auth:^ 0.15.0 + 1 添加到 pubspc.yaml
医生摘要(要查看所有详细信息,请运行flutter doctor -v):[√]
Flutter(频道稳定,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代码(1.40.0版)X未安装Flutter扩展;从https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
安装[√]已连接设备(1个可用)
!医生发现了1类问题。
感谢您的帮助。
答案 0 :(得分:2)
getInitialLink()仅在通过动态链接打开时有效(请参见插件文档),而不是在应用程序处于活动状态或在后台运行时(为此,您需要调用onLink)。
"script-src 'self'"