Flutter应用链接监听插件sa_app_links_listener_lego的使用

发布于 1周前 作者 yuanlaile 来自 Flutter

Flutter应用链接监听插件sa_app_links_listener_lego的使用

概述

sa_app_links_listener_lego 是一个基于简单架构框架的 Flutter 应用链接监听插件。通过此插件,您可以轻松地在 Flutter 应用中监听深度链接(Deep Links)或通用链接(Universal Links)。


安装

步骤 1: 安装 CLI 工具

首先,在 lego 项目的根目录下打开终端,并运行以下命令以安装 CLI 工具。如果您还没有 lego 项目,可以创建一个新的项目。

flutter pub global activate lego_cli
lego create

步骤 2: 将插件添加到项目中

在终端中,进入您的 Flutter 项目目录,并运行以下命令将 sa_app_links_listener_lego 添加到您的项目中。

lego add sa_app_links_listener_lego

步骤 3: 配置应用链接

根据 官方文档 中的说明,配置您的应用链接。


使用方法

示例代码

以下是一个完整的示例代码,展示如何使用 sa_app_links_listener_lego 插件来监听应用链接。

1. 初始化插件

首先,在您的 main.dart 文件中初始化插件并监听链接。

import 'package:flutter/material.dart';
import 'package:sa_app_links_listener_lego/sa_app_links_listener_lego.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter App Links Listener Demo',
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  String _receivedLink = '';

  @override
  void initState() {
    super.initState();
    // 初始化插件并监听链接
    SAAppLinksListenerLego.instance.startListening((link) {
      setState(() {
        _receivedLink = link;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('App Links Listener Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Received Link:',
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 10),
            Text(
              _receivedLink.isEmpty ? 'No link received yet' : _receivedLink,
              style: TextStyle(fontSize: 16, color: Colors.blue),
            ),
          ],
        ),
      ),
    );
  }
}

2. 配置 Android 和 iOS 的应用链接

Android 配置
  1. 打开 android/app/src/main/AndroidManifest.xml 文件。
  2. <activity> 标签中添加以下代码:
<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="yourdomain.com" />
</intent-filter>

yourdomain.com 替换为您自己的域名。

iOS 配置
  1. 打开 ios/Runner/Info.plist 文件。
  2. 添加以下键值对:
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLName</key>
    <string>com.yourcompany.yourapp</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>yourapp</string>
    </array>
  </dict>
</array>

更多关于Flutter应用链接监听插件sa_app_links_listener_lego的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用链接监听插件sa_app_links_listener_lego的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


sa_app_links_listener_lego 是一个用于监听和处理应用程序链接的 Flutter 插件。它可以帮助你在 Flutter 应用中处理深度链接(Deep Links)和通用链接(Universal Links)。以下是使用 sa_app_links_listener_lego 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 sa_app_links_listener_lego 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  sa_app_links_listener_lego: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

在你的 Flutter 应用中初始化 sa_app_links_listener_lego 插件。通常,你可以在 main.dart 文件中进行初始化。

import 'package:flutter/material.dart';
import 'package:sa_app_links_listener_lego/sa_app_links_listener_lego.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化插件
  await SaAppLinksListenerLego.initialize();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Deep Link Example',
      home: HomeScreen(),
    );
  }
}

3. 监听链接

在需要监听链接的地方,使用 SaAppLinksListenerLego 来监听链接事件。你可以在 initState 方法中设置监听器。

import 'package:flutter/material.dart';
import 'package:sa_app_links_listener_lego/sa_app_links_listener_lego.dart';

class HomeScreen extends StatefulWidget {
  [@override](/user/override)
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  String? _link;

  [@override](/user/override)
  void initState() {
    super.initState();
    _listenForLinks();
  }

  void _listenForLinks() {
    SaAppLinksListenerLego.listen((String link) {
      setState(() {
        _link = link;
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Deep Link Example'),
      ),
      body: Center(
        child: _link != null
            ? Text('Received link: $_link')
            : Text('No link received yet.'),
      ),
    );
  }
}

4. 处理链接

当应用接收到链接时,SaAppLinksListenerLego.listen 回调会被触发,你可以在回调中处理链接。例如,你可以根据链接的内容导航到不同的页面。

5. 配置深度链接(可选)

如果你需要处理深度链接或通用链接,你还需要在 Android 和 iOS 项目中进行相应的配置。

Android 配置

AndroidManifest.xml 文件中添加以下内容:

<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="yourdomain.com" />
</intent-filter>

iOS 配置

Info.plist 文件中添加以下内容:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>yourdomain.com</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>https</string>
        </array>
    </dict>
</array>

6. 测试链接

你可以通过以下方式测试深度链接:

  • Android: 使用 adb 命令发送深度链接:

    adb shell am start -W -a android.intent.action.VIEW -d "https://yourdomain.com/path" com.example.app
  • iOS: 在 Safari 浏览器中直接输入链接,或者使用 Xcode 的模拟器测试。

7. 处理冷启动和热启动

sa_app_links_listener_lego 插件通常会处理冷启动和热启动的链接。确保你的应用在冷启动时也能正确处理链接。

8. 清理资源(可选)

如果你不再需要监听链接,可以调用 SaAppLinksListenerLego.dispose() 来释放资源。

[@override](/user/override)
void dispose() {
  SaAppLinksListenerLego.dispose();
  super.dispose();
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!