Flutter动态链接处理插件easy_dynamic_link的使用

Flutter 动态链接处理插件 easy_dynamic_link 的使用

😀 关于 Easy Dynamic Link

这是一个使 Firebase 中的动态链接易于使用的项目。该项目包含以下功能:

  • 动态链接处理器
  • 简化动态链接生成

使用说明:

要使用此项目,必须默认在应用中设置 Firebase。

To use the project, you must set firebase on the app by default.


#### 使用方法

```dart
final EasyDL _easyDL = EasyDL();
_easyDL.init();
// 简化动态链接生成  
_easyDL.makeDynamicLink(
  path,
  webPage,
  basicDeepLink,
  androidPackageName,
  iosBundleId,
  androidFallBackUrl, 
  iosFallBackUrl,
  appStoreId); 
// 动态链接处理器
_easyDL.handler((uri, data){});

示例代码

以下是 example/lib/main.dart 的示例代码:

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  void initState() {
    _easyDL.initFbd(); // 初始化 Firebase
    super.initState();
    _easyDL.handler(_listenFunction); // 设置监听函数
  }

  late Uri? uri;
  late List? data;

  void _listenFunction(Uri uri, List<dynamic> data) {
    print('Uri : $uri from Dynamic Link Data');
    print('Data : $data from Dynamic Link Data');
    setState(() {
      uri = uri;
      data = data;
    });
  }

  final EasyDL _easyDL = EasyDL();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              '$uri', // 显示获取到的 URI
              style: Theme.of(context).textTheme.headlineMedium,
            ),
            Text(
              '$data', // 显示获取到的数据
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter动态链接处理插件easy_dynamic_link的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter动态链接处理插件easy_dynamic_link的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用easy_dynamic_link插件来处理动态链接的一个示例。这个示例将展示如何集成插件、接收动态链接以及处理这些链接。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加easy_dynamic_link依赖:

dependencies:
  flutter:
    sdk: flutter
  easy_dynamic_link: ^latest_version  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

2. 配置Android项目

在Android项目的AndroidManifest.xml中,确保你已经添加了Firebase Dynamic Links所需的intent-filter:

<activity
    android:name=".MainActivity"
    android:launchMode="singleTop"
    android:theme="@style/LaunchTheme"
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
    android:hardwareAccelerated="true"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <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="yourapp.page.link" /> <!-- 替换为你的Dynamic Link域名 -->
    </intent-filter>
</activity>

3. 配置iOS项目

在iOS项目中,你需要在Info.plist中添加一个URL Scheme,并在AppDelegate.swift(或AppDelegate.m)中处理动态链接。不过,easy_dynamic_link插件通常会自动处理大部分iOS配置,你可能只需要确保你的Firebase项目配置正确。

4. 初始化并处理动态链接

在你的Flutter应用中,初始化easy_dynamic_link并处理接收到的动态链接:

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

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

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

class _MyAppState extends State<MyApp> {
  String? _dynamicLink;

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

  Future<void> _initializeDynamicLinks() async {
    // 初始化EasyDynamicLink
    EasyDynamicLink.instance.init(
      androidParameters: AndroidParameters(
        apiKey: 'YOUR_ANDROID_API_KEY', // 替换为你的Firebase项目中的API Key
      ),
      iosParameters: IOSParameters(
        apiKey: 'YOUR_IOS_API_KEY', // 替换为你的Firebase项目中的API Key(iOS通常不需要这个)
        appID: 'YOUR_IOS_APP_ID', // 替换为你的iOS应用的Bundle ID
      ),
    );

    // 监听动态链接
    EasyDynamicLink.instance.onLinkReceived.listen((link) {
      setState(() {
        _dynamicLink = link;
      });
      print('Received dynamic link: $_dynamicLink');
    });

    // 获取初始链接(从冷启动或点击链接启动应用时获取)
    final initialLink = await EasyDynamicLink.instance.getInitialLink();
    if (initialLink != null) {
      setState(() {
        _dynamicLink = initialLink;
      });
      print('Initial dynamic link: $_dynamicLink');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Dynamic Link Demo'),
        ),
        body: Center(
          child: _dynamicLink == null
              ? Text('No dynamic link received yet.')
              : Text('Received dynamic link: $_dynamicLink'),
        ),
      ),
    );
  }
}

5. 运行应用

现在你可以运行你的Flutter应用,并通过Firebase Dynamic Links生成一个链接,然后在设备上点击该链接。你应该能够在应用中看到接收到的动态链接。

这个示例展示了如何集成easy_dynamic_link插件,并处理从Firebase Dynamic Links接收到的链接。请注意,你需要根据你的Firebase项目配置替换相应的API Key和域名。

回到顶部