FirebaseDynamicLinks.instance.getInitialLink() 总是在 Android 上返回 null
FirebaseDynamicLinks.instance.getInitialLink() always returning null on Android
我正在使用 firebase_dynamic_links 无密码登录 和 getInitialLink() 在 版本 0.5.0+8 上总是返回 null。
如果我使用 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
Doctor summary (to see all details, run flutter doctor -v): [√]
Flutter (Channel stable, v1.9.1+hotfix.6, on Microsoft Windows
[Version 10.0.17763.864], locale pt-BR)
[√] Android toolchain - develop for Android devices (Android SDKversion 28.0.3)
[√] Android Studio (version 3.5)
[!] VS Code (version 1.40.0) X Flutter extension not installed; install from https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[√] Connected device (1 available)
! Doctor found issues in 1 category.
感谢任何帮助。
getInitialLink() 仅在通过动态 link 打开时有效(请参阅插件文档),而不是在应用程序处于活动状态或处于后台时(为此您需要调用 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);
}
);
}
请您改用此插件app_links
因为firebase_dynamic_links目前有bug。
确保您在 firebase 项目
中开始动态 link
我正在使用 firebase_dynamic_links 无密码登录 和 getInitialLink() 在 版本 0.5.0+8 上总是返回 null。 如果我使用 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
Doctor summary (to see all details, run flutter doctor -v): [√]
Flutter (Channel stable, v1.9.1+hotfix.6, on Microsoft Windows [Version 10.0.17763.864], locale pt-BR)
[√] Android toolchain - develop for Android devices (Android SDKversion 28.0.3)
[√] Android Studio (version 3.5)
[!] VS Code (version 1.40.0) X Flutter extension not installed; install from https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[√] Connected device (1 available)
! Doctor found issues in 1 category.
感谢任何帮助。
getInitialLink() 仅在通过动态 link 打开时有效(请参阅插件文档),而不是在应用程序处于活动状态或处于后台时(为此您需要调用 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);
}
);
}
请您改用此插件app_links
因为firebase_dynamic_links目前有bug。
确保您在 firebase 项目