如何在Flutter中实现深层链接,并重定向到应用商店?
有没有一种方法可以在flutter中实现深层链接,因此,如果用户单击链接,则将他们重定向到应用程序的特定部分(假定已安装该应用程序,但不是),则将他们重定向到相应的应用商店,以安装该应用,然后带到该特定部分。
在寻找解决方案时,我遇到了一个名为的程序包,uni_links
但是我不确定它是否可以满足此要求。
回答:
您可以为此使用Firebase动态链接:
https://firebase.google.com/docs/dynamic-
links
那里说:
如果用户在iOS或Android上打开了动态链接,但未安装您的应用,则系统会提示用户安装该链接;然后,在安装后,您的应用程序将启动并可以访问该链接。
您可以在此处找到有关如何使用Flutter实施此操作的信息:
https://pub.dev/packages/firebase_dynamic_links
我已经在Android和iOS上尝试过了,效果很好。如果未安装该应用程序,则将打开Google Play商店或Apple
AppStore。用户可以点击“安装”,然后点击“打开”。之后,启动您的应用程序,并将动态链接发送到您的应用程序(通过剪贴板在iOS上),您可以在其中访问该应用程序,如上面的网站所述。即在应用程序启动后的第一个initState方法中,您可以立即调用
final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.retrieveDynamicLink();final Uri deepLink = data?.link;
获得深层链接。但是,以我在iOS上的经验来看,现在检索链接还为时过早。尝试时出现“
null”。似乎要花一点时间。然后,我使用WidgetsBindingObserver并在didChangeAppLifecycleState方法中进行了查看AppLifecycleState.resumed
。我在那里叫retrieveDynamicLink。由于权限请求(如果用户允许通知),该方法被调用了两次。第一次返回null,但是第二次返回深度链接。所以我的解决方案如下所示:
class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver { @override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
_retrieveDynamicLink();
}
}
/**
* Laden des Deep Link nach der Installation.
*/
Future<void> _retrieveDynamicLink() async {
final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.retrieveDynamicLink();
final Uri deepLink = data?.link;
if (deepLink != null) {
// Use the deepLink
// ...
}
}
以上是 如何在Flutter中实现深层链接,并重定向到应用商店? 的全部内容, 来源链接: utcz.com/qa/426600.html