Flutter中的Universal Links:跨平台链接支持

Flutter中的Universal Links:跨平台链接支持

5 回复

Universal Links让APP通过标准HTTP或HTTPS链接直接打开,增强用户体验。

更多关于Flutter中的Universal Links:跨平台链接支持的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter中的Universal Links支持iOS和Android平台的深度链接,通过配置uni_links插件,实现应用内跳转和网页与应用的关联。

Universal Links 是 iOS 和 Android 平台上用于深度链接的一种技术,可让应用通过标准的 HTTP/HTTPS URL 直接打开特定内容。在 Flutter 中,通过 uni_links 插件支持 Universal Links。配置步骤包括:在 iOS 的 Info.plist 和 Android 的 AndroidManifest.xml 中声明链接,并在应用服务器上托管 apple-app-site-association 文件。处理链接时,使用 uni_links 监听并解析传入的链接,导航到相应的页面。

Universal Links让App通过标准HTTP或HTTPS链接直接打开,提升用户体验。

在Flutter中,Universal Links 是一种用于在 iOS 和 Android 平台上处理深度链接(Deep Links)的技术。它允许应用程序通过标准的 HTTP/HTTPS URL 直接打开特定的内容,而不是通过自定义的 URL Scheme。Universal Links 提供了更好的用户体验和安全性。

实现步骤

  1. 配置服务器

    • 在服务器上托管一个 apple-app-site-association 文件,用于声明应用程序支持哪些域名。
    • 对于 Android,需要在 AndroidManifest.xml 中配置 intent-filter 来处理链接。
  2. 配置 iOS

    • 在 Xcode 中启用 Associated Domains,并添加你的域名。
    • Info.plist 中配置 CFBundleURLTypesCFBundleURLSchemes
  3. 配置 Android

    • AndroidManifest.xml 中添加 intent-filter 来处理 httphttps 链接。
  4. 处理链接

    • 使用 Flutter 的 uni_linksflutter_uni_links 插件来处理 Universal Links。

示例代码

  1. 依赖项: 在 pubspec.yaml 中添加依赖:

    dependencies:
      uni_links: ^0.5.1
    
  2. 初始化: 在 main.dart 中初始化并监听链接:

    import 'package:uni_links/uni_links.dart';
    import 'package:flutter/material.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      String initialLink;
      try {
        initialLink = await getInitialLink();
      } catch (e) {
        print('Error getting initial link: $e');
      }
    
      runApp(MyApp(initialLink: initialLink));
    }
    
    class MyApp extends StatelessWidget {
      final String initialLink;
    
      MyApp({this.initialLink});
    
      [@override](/user/override)
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: Text('Universal Links Example')),
            body: Center(
              child: Text(initialLink ?? 'No initial link'),
            ),
          ),
        );
      }
    }
    
  3. 监听链接: 在 initState 中添加监听器:

    StreamSubscription _sub;
    
    [@override](/user/override)
    void initState() {
      super.initState();
      _sub = getLinksStream().listen((String link) {
        print('New link: $link');
      }, onError: (err) {
        print('Error: $err');
      });
    }
    
    [@override](/user/override)
    void dispose() {
      _sub.cancel();
      super.dispose();
    }
    

总结

Universal Links 提供了一种跨平台的方式来处理深度链接,使得应用程序能够通过标准的 HTTP/HTTPS URL 直接打开特定内容。通过配置服务器、iOS 和 Android 的设置,并使用 Flutter 插件,你可以轻松实现这一功能。

回到顶部