Flutter应用间通信插件send2app的使用

Flutter应用间通信插件send2app的使用

Send2App 是一个 Flutter 插件,可以轻松地将自定义通知集成到您的 Flutter 应用程序中。通过此插件,您可以接收各种类型的通知,例如文本、图片、URL、丰富卡片、建议和实时活动。

特性

  • 文本通知:带有标题和消息的简单通知。
  • 图片通知:包含图片以增强视觉吸引力的通知。
  • URL通知:链接到特定网页的通知。
  • 丰富卡片通知:带有图片、标题、描述和操作按钮的详细通知。
  • 建议通知:基于用户偏好推荐的通知。
  • 实时活动通知:在用户的锁屏或通知中心进行实时更新的通知。

安装

要将 Send2App 集成到您的 Flutter 项目中,请在项目的 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  send2app: ^latest_version

然后运行以下命令以获取最新版本的插件:

flutter pub get

使用示例

以下是一个完整的示例,展示如何使用 Send2App 插件来发送不同类型的通知。

1. 初始化插件

首先,在应用程序的主文件中初始化插件。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

2. 发送文本通知

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  void sendTextNotification() async {
    await Send2App.sendNotification(
      title: "测试通知",
      body: "这是来自Send2App的文本通知",
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Send2App示例"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: sendTextNotification,
          child: Text("发送文本通知"),
        ),
      ),
    );
  }
}

3. 发送图片通知

void sendImageNotification() async {
  await Send2App.sendNotification(
    title: "图片通知",
    body: "这是一张来自Send2App的图片通知",
    imageUrl: "https://example.com/image.jpg", // 替换为实际的图片URL
  );
}

4. 发送URL通知

void sendUrlNotification() async {
  await Send2App.sendNotification(
    title: "URL通知",
    body: "点击这里访问我们的网站",
    url: "https://example.com", // 替换为实际的URL
  );
}

5. 发送丰富卡片通知

void sendRichCardNotification() async {
  await Send2App.sendRichCardNotification(
    title: "丰富卡片通知",
    description: "这是来自Send2App的丰富卡片通知",
    imageUrl: "https://example.com/card-image.jpg", // 替换为实际的图片URL
    actions: [
      Send2AppAction(label: "查看详情", url: "https://example.com/detail"),
      Send2AppAction(label: "立即购买", url: "https://example.com/buy"),
    ],
  );
}

6. 发送建议通知

void sendSuggestionNotification() async {
  await Send2App.sendSuggestionNotification(
    title: "建议通知",
    body: "根据您的偏好,我们为您推荐以下内容",
    suggestions: [
      Send2AppSuggestion(title: "选项1", url: "https://example.com/option1"),
      Send2AppSuggestion(title: "选项2", url: "https://example.com/option2"),
    ],
  );
}

7. 发送实时活动通知

void sendLiveActivityNotification() async {
  await Send2App.sendLiveActivityNotification(
    title: "实时活动通知",
    body: "这是来自Send2App的实时活动通知",
    liveActivityId: "activity_001", // 唯一的活动ID
  );
}

更多关于Flutter应用间通信插件send2app的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用间通信插件send2app的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


send2app 是一个用于在 Flutter 应用之间进行通信的插件。它允许你通过指定的 URI Scheme 或 Package Name 在应用之间发送数据。以下是如何使用 send2app 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  send2app: ^0.1.0  # 请检查最新版本

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

2. 配置 URI Scheme(可选)

如果你想通过 URI Scheme 打开另一个应用,你需要在目标应用的 AndroidManifest.xmlInfo.plist 文件中配置 URI Scheme。

Android

android/app/src/main/AndroidManifest.xml 中添加以下内容:

<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="yourapp" />  <!-- 替换为你应用的Scheme -->
</intent-filter>

iOS

ios/Runner/Info.plist 中添加以下内容:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>yourapp</string>  <!-- 替换为你应用的Scheme -->
        </array>
    </dict>
</array>

3. 使用 send2app 插件

在你的 Flutter 代码中,你可以使用 send2app 插件来发送数据到另一个应用。

发送数据

import 'package:send2app/send2app.dart';

void sendData() async {
  try {
    await Send2App.sendTo(
      uri: 'yourapp://path/to/data',  // 替换为你的URI Scheme
      packageName: 'com.example.anotherapp',  // 替换为目标应用的包名
      data: {'key': 'value'},  // 你想要发送的数据
    );
  } catch (e) {
    print('Failed to send data: $e');
  }
}

接收数据

在目标应用中,你可以通过 WidgetsBindingObserver 来监听 URI Scheme 的打开事件,并处理接收到的数据。

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

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

class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
  String _receivedData = '';

  @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) {
      _handleIncomingData();
    }
  }

  void _handleIncomingData() async {
    try {
      final Uri? uri = await getInitialUri();
      if (uri != null) {
        setState(() {
          _receivedData = uri.toString();
        });
      }
    } catch (e) {
      print('Failed to handle incoming data: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Received Data'),
        ),
        body: Center(
          child: Text('Received Data: $_receivedData'),
        ),
      ),
    );
  }
}

4. 处理权限(如果需要)

在某些情况下,你可能需要处理权限问题,特别是在 Android 上。确保在 AndroidManifest.xml 中添加必要的权限。

<uses-permission android:name="android.permission.INTERNET" />
回到顶部