Flutter FireBaseDynamicLink.instance.getInitialLink()在Android上始终返回null
我使用firebase_dynamic_链接进行firebase的无密码登录,并且getInitialLink在版本0.5.0+8上总是返回null。 如果我使用版本0.4.0+4和retrieveDynamicLink而不是getInitialLink,它就可以正常工作 由于它在版本0.4.0+4中工作,我假设问题不在Firebase设置上。 以下是我发送电子邮件的方式:Flutter FireBaseDynamicLink.instance.getInitialLink()在Android上始终返回null,flutter,firebase-authentication,firebase-dynamic-links,Flutter,Firebase Authentication,Firebase Dynamic Links,我使用firebase_dynamic_链接进行firebase的无密码登录,并且getInitialLink在版本0.5.0+8上总是返回null。 如果我使用版本0.4.0+4和retrieveDynamicLink而不是getInitialLink,它就可以正常工作 由于它在版本0.4.0+4中工作,我假设问题不在Firebase设置上。 以下是我发送电子邮件的方式: final FirebaseAuth user = FirebaseAuth.instance; try {
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
医生摘要要查看所有详细信息,请运行颤振医生-v:[√]
颤振通道稳定,v1.9.1+修补程序.6,在Microsoft Windows上
[版本10.0.17763.864],区域设置pt BR
[√] Android工具链-为Android设备开发Android SDKversion 28.0.3
[√] Android Studio 3.5版
[!]VS代码版本1.40.0 X颤振扩展未安装;从安装
[√] 已连接的设备1可用
!医生在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);
}
);
}
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);
}
);
}
你找到解决办法了吗?@BenjaminSmith没有。他们也没有回答。我只是使用0.4.0+4版本,一切正常。检查这个答案,可能会有帮助。这对我有用:你找到解决办法了吗?@BenjaminSmith没有。他们也没有回答。我只是使用0.4.0+4版本,一切正常。检查这个回答,这可能会有帮助。这对我很有用: