Flutter中的App Links:实现应用内跳转

Flutter中的App Links:实现应用内跳转

5 回复

Flutter中实现App Links用于深层链接,可实现应用内外跳转。

更多关于Flutter中的App Links:实现应用内跳转的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,使用uni_links包处理App Links,通过Uri解析链接并实现应用内跳转。确保在AndroidManifest.xmlInfo.plist中配置深度链接。

在Flutter中,App Links(深度链接)可以通过flutter_deep_linkinguni_links等插件实现应用内跳转。首先,在AndroidManifest.xmlInfo.plist中配置URL Scheme或App Links。然后,在Flutter代码中使用插件监听链接,并根据链接内容导航到相应的页面。例如:

import 'package:uni_links/uni_links.dart';

void initDeepLink() {
  getInitialLink().then((uri) {
    if (uri != null) {
      handleDeepLink(uri);
    }
  });

  linkStream.listen((uri) {
    handleDeepLink(uri);
  });
}

void handleDeepLink(Uri uri) {
  // 根据uri跳转到相应页面
}

确保在pubspec.yaml中添加依赖,并处理不同平台的配置。

App Links用于实现安全的应用间跳转,需配置域名关联。

在Flutter中,App Links是一种允许用户通过URL直接跳转到应用程序特定内容的技术。通过App Links,你可以实现从外部链接(如浏览器或邮件)直接打开应用内的特定页面。以下是实现App Links的基本步骤:

1. 配置AndroidManifest.xml

在Android项目中,你需要在AndroidManifest.xml文件中配置intent-filter,以处理App Links。

<activity android:name=".MainActivity">
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="https" android:host="www.example.com" />
    </intent-filter>
</activity>

2. 配置assetlinks.json

你需要在你的网站根目录下放置一个assetlinks.json文件,以验证App Links的所有权。

[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.app",
      "sha256_cert_fingerprints": ["YOUR_APP_SHA256_FINGERPRINT"]
    }
  }
]

3. 处理App Links in Flutter

在Flutter中,你可以使用uni_links包来处理App Links。

首先,在pubspec.yaml中添加依赖:

dependencies:
  uni_links: ^0.5.1

然后,在main.dart中处理App Links:

import 'package:flutter/material.dart';
import 'package:uni_links/uni_links.dart';
import 'dart:async';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  StreamSubscription _sub;

  @override
  void initState() {
    super.initState();
    initUniLinks();
  }

  @override
  void dispose() {
    _sub?.cancel();
    super.dispose();
  }

  Future<void> initUniLinks() async {
    try {
      _sub = getUriLinksStream().listen((Uri uri) {
        // 处理URI
        print('Got URI: $uri');
        // 根据URI跳转到特定页面
      }, onError: (err) {
        // 处理错误
        print('Error: $err');
      });
    } catch (e) {
      // 处理异常
      print('Exception: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('App Links Example'),
        ),
        body: Center(
          child: Text('App Links Example'),
        ),
      ),
    );
  }
}

4. 测试App Links

确保你的设备已经安装了应用,并且assetlinks.json文件已经正确配置。然后,你可以通过点击一个配置好的URL来测试App Links是否正常工作。

通过这些步骤,你可以在Flutter中实现App Links,允许用户通过外部链接直接跳转到应用内的特定页面。

回到顶部