当我的应用程序在后台运行时,我得到链接并且它工作正常但是当我的应用程序被杀死时,当我从深层链接打开应用程序时我没有得到链接。
这是我获取链接的代码
这是我编辑过的代码
void initDynamicLinks() async {
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLink) async {
final Uri deepLink = dynamicLink?.link;
if (deepLink != null) {
print('---new deep link onLink**********************************${deepLink}');
Fluttertoast.showToast(
msg: "onLink handle ${deepLink}",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0
);
//Navigator.pushNamed(context, deepLink.path);
}
},
onError: (OnLinkErrorException e) async {
print('onLinkError');
print(e.message);
}
);
final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink();
final Uri deepLink = data?.link;
if (deepLink != null) {
print('---new deep found************************************************');
Fluttertoast.showToast(
msg: "get?Initial handle ${deepLink}",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0
);
// Navigator.pushNamed(context, deepLink.path);
}
}
我为 init 调用了 initPlatformState(),当我的应用程序在后台运行时它工作正常。
当我的应用程序强制停止时如何获取 url
现在同样的问题 onLink 工作但 getInitialLink 在第一次从 url 打开应用程序时不起作用
答案 0 :(得分:0)
您的 FirebaseDynamicLinks.instance.getInitialLink();
和 FirebaseDynamicLinks.instance.onLink
逻辑在哪里?
您似乎只是在应用程序处于后台时通过 stream.listen 方法处理链接,但您发布的代码并未显示应用程序终止时处理链接的逻辑。
答案 1 :(得分:0)
我为 getInitialLink 设置了 2 秒延迟,然后它就起作用了。
答案 2 :(得分:0)
基本上,您需要在启动时添加 2-3 秒延迟 + 您可以处理 (onSuccess) 之外的深层链接。它终于对我有用了! 检查下面的链接 https://betterprogramming.pub/deep-linking-in-flutter-with-firebase-dynamic-links-8a4b1981e1eb