您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Flutter中实现深层链接,并重定向到应用商店?

如何在Flutter中实现深层链接,并重定向到应用商店?

您可以为此使用Firebase动态链接

https://firebase.google.com/docs/dynamic- links

那里说:

如果用户在iOS或Android上打开了动态链接,但未安装您的应用,则系统会提示用户安装该链接;然后,在安装后,您的应用程序将启动并可以访问该链接

您可以在此处找到有关如何使用Flutter实施此操作的信息:

https://pub.dev/packages/firebase_dynamic_links

我已经在Android和iOS上尝试过了,效果很好。如果未安装该应用程序,则将打开Goog??le 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
        // ...
    }
}
其他 2022/1/1 18:13:34 有801人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶