Flutter消息发送插件fcm_sending的使用

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

Flutter消息发送插件fcm_sending的使用

Fcm Sending 是一个简化了在Flutter应用中发送通知过程的包。该插件帮助你轻松地发送自定义通知,并将通知消息体转换为Dart模型,确保清晰性并消除处理通知数据时的困惑。

特性

  • 发送带有自定义声音、振动和优先级设置的通知。
  • 自动将复杂的通知负载转换为Dart模型。
  • 通过明确定义通知数据来减少混淆。
  • 与Firebase和其他通知服务的集成简单方便。

安装

在你的pubspec.yaml文件中添加以下行:

dependencies:
  fcm_sending: latest_version

然后运行flutter pub get来安装该包。

使用

下面是如何使用此包发送通知的一个示例:

import 'package:fcm_sending/fcm_message.dart';

void sendCustomNotification() {
  
  // 在main.dart中初始化
  FcmSending.init();
  
  // 然后在任何地方都可以使用
  FcmSending.sendMessage();
}

更多关于Flutter消息发送插件fcm_sending的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter消息发送插件fcm_sending的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用fcm_sending插件来发送Firebase Cloud Messaging (FCM)消息的示例代码。需要注意的是,fcm_sending这个包名可能是一个假设的包名,因为实际上更常见的包是用于接收消息的,比如firebase_messaging。然而,为了符合你的要求,我将展示一个假设的发送消息的实现过程,这通常是在服务器端完成的,而不是直接在Flutter客户端完成。不过,为了演示目的,我将展示一个模拟的Flutter代码,它可能会调用一个后端API来发送消息。

1. 设置Flutter项目

首先,确保你的Flutter项目已经设置好,并且已经添加了firebase_corefirebase_messaging依赖(用于接收消息,虽然这里重点是发送,但通常项目中会同时包含接收功能)。

pubspec.yaml文件中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^1.x.x  # 使用最新版本
  firebase_messaging: ^11.x.x  # 使用最新版本

然后运行flutter pub get

2. 配置Firebase

确保你已经在Firebase控制台中为你的应用配置了FCM,并获取了相关的配置信息(如google-services.json文件)。

3. 创建后端API(模拟)

通常,发送FCM消息是通过服务器端代码完成的。这里我们假设有一个后端API可以处理发送消息的请求。以下是一个使用Flutter的http包来调用这个API的示例。

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

dependencies:
  http: ^0.13.3  # 使用最新版本

然后,在Flutter项目中创建一个发送消息的函数:

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('FCM Message Sender'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _sendMessage,
            child: Text('Send Message'),
          ),
        ),
      ),
    );
  }

  Future<void> _sendMessage() async {
    // 假设后端API的URL
    String apiUrl = 'https://your-backend-api.com/send_fcm_message';

    // FCM消息的接收者token(这里应该是目标设备的FCM注册token)
    String token = 'device_fcm_token_here';

    // 要发送的消息内容
    Map<String, String> messageData = {
      'notification': jsonEncode({
        'title': 'Hello',
        'body': 'This is a test message!',
      }),
      'to': token,
    };

    // 将消息数据转换为JSON
    String messageJson = jsonEncode(messageData);

    // 发送POST请求到后端API
    var response = await http.post(
      Uri.parse(apiUrl),
      headers: <String, String>{
        'Content-Type': 'application/json',
      },
      body: messageJson,
    );

    // 处理响应
    if (response.statusCode == 200) {
      print('Message sent successfully!');
    } else {
      print('Failed to send message: ${response.statusCode}');
    }
  }
}

4. 后端API实现(示例,使用Node.js和Firebase Admin SDK)

以下是一个简单的Node.js服务器示例,它使用Firebase Admin SDK来处理FCM消息的发送。

首先,安装必要的依赖:

npm install express body-parser firebase-admin

然后,创建一个server.js文件:

const express = require('express');
const bodyParser = require('body-parser');
const admin = require('firebase-admin');

admin.initializeApp({
  credential: admin.credential.cert({
    projectId: "your-firebase-project-id",
    clientEmail: "your-service-account-email@your-project-id.iam.gserviceaccount.com",
    privateKey: "-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  }),
});

const app = express();
app.use(bodyParser.json());

app.post('/send_fcm_message', (req, res) => {
  const { to, notification } = req.body;

  const message = {
    notification,
    token: to,
  };

  admin.messaging().send(message)
    .then((response) => {
      console.log('Successfully sent message:', response);
      res.status(200).send('Message sent successfully!');
    })
    .catch((error) => {
      console.log('Error sending message:', error);
      res.status(500).send('Failed to send message');
    });
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

结论

上述代码展示了如何在Flutter客户端调用一个后端API来发送FCM消息,以及如何在服务器端(使用Node.js和Firebase Admin SDK)实现这个API。请注意,实际应用中你可能需要处理更多的错误情况和安全措施。

回到顶部