Flutter Firebase Cloud Messaging插件dart_fcm的使用

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

Flutter Firebase Cloud Messaging插件dart_fcm的使用

dart_fcm 简介

dart_fcm 是一个开源项目,它是许多共享库之一,这些库构成了由 Savannah Informatics Limited 制作并开源的更广泛的软件生态系统的一部分。dart_fcm 是一个用于设置和消费来自 Firebase 的云通知的包装包。

安装说明

要将此包作为库使用,请依赖它:

运行以下命令:

  • 使用 Flutter:
$ flutter pub add dart_fcm

这将在您的包的 pubspec.yaml 文件中添加如下行(并隐式执行 dart pub get):

dependencies:
  dart_fcm: ^0.1.0

或者,您的编辑器可能支持 flutter pub get。请查阅编辑器的文档以了解更多信息。

最后:

导入它如下所示:

import 'package:dart_fcm/src/fcm.dart';

使用方法

让我们看看如何将您的应用程序连接到使用 dart_fcm

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

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

/// [YourAppName] 标记为应用程序的入口点。
class YourAppName extends StatefulWidget {
  const YourAppName({Key? key}) : super(key: key);

  [@override](/user/override)
  _YourAppNameState createState() => _YourAppNameState();
}

class _YourAppNameState extends State<YourAppName> {
  bool hasFinishedLaunching = false;

  [@override](/user/override)
  void didChangeDependencies() {
    if (!hasFinishedLaunching) {
      /// [configure] 负责正确设置
      /// 本地通知(并在需要时请求权限)并将 firebase 消息传递 [onMessage] 回调连接起来以显示 fcm 消息
      SILFCM().configure(context: context);
      hasFinishedLaunching = true;
    }

    super.didChangeDependencies();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(
          // 您的应用程序
      ),
    );
  }
}

更多关于Flutter Firebase Cloud Messaging插件dart_fcm的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Firebase Cloud Messaging插件dart_fcm的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用dart_fcm(Firebase Cloud Messaging)插件的示例代码。请注意,dart_fcm可能并不是官方推荐的包名,通常我们使用firebase_messaging包来实现Firebase Cloud Messaging功能。不过,为了符合你的要求,这里假设dart_fcm是一个有效的包名,并且它提供了类似的功能。

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

dependencies:
  flutter:
    sdk: flutter
  dart_fcm: ^最新版本号  # 替换为实际的最新版本号

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

接下来,在你的Flutter项目中配置Firebase。这通常涉及到在Firebase控制台中为你的应用创建一个项目,并下载google-services.json(对于Android)和GoogleService-Info.plist(对于iOS)文件,然后将这些文件放到你的Flutter项目的android/app/ios/Runner/目录下。

以下是Flutter代码示例,展示如何使用dart_fcm(假设其功能与firebase_messaging类似)来接收和处理Firebase Cloud Messaging消息:

import 'package:flutter/material.dart';
import 'package:dart_fcm/dart_fcm.dart'; // 假设这是正确的导入路径

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Firebase Cloud Messaging Demo'),
        ),
        body: MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();

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

  void _configureFCM() {
    // 请求消息权限
    _firebaseMessaging.requestNotificationPermissions(
      const IosNotificationSettings(sound: true, badge: true, alert: true),
    );

    // 配置前台消息处理
    _firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {
        print('onMessage: $message');
        // 显示本地通知或处理消息
      },
      onBackgroundMessage: myBackgroundMessageHandler, // 需要在AndroidManifest.xml中配置服务
      onLaunch: (Map<String, dynamic> message) async {
        print('onLaunch: $message');
      },
      onResume: (Map<String, dynamic> message) async {
        print('onResume: $message');
      },
    );

    // 获取设备令牌
    _firebaseMessaging.getToken().then((String token) {
      print('Firebase Messaging token: $token');
      // 可以将令牌发送到你的服务器以便发送推送通知
    });
  }

  // 后台消息处理函数(需要在AndroidManifest.xml中配置服务)
  Future<void> myBackgroundMessageHandler(Map<String, dynamic> message) async {
    print('Handling a background message: ${message['data']}');
    // 在后台处理消息,例如保存到数据库
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Waiting for a message...'),
    );
  }
}

注意

  1. 对于后台消息处理,你需要在AndroidManifest.xml中配置一个服务,这在firebase_messaging插件中有详细的说明。如果dart_fcm有类似的配置要求,请参考其文档。

  2. myBackgroundMessageHandler函数需要在应用的Application类中注册为服务,这在原生Android开发中通常是通过修改AndroidManifest.xml文件来实现的。但在Flutter中,你可能需要使用一个MethodChannel来调用原生代码进行配置。

  3. iOS的后台消息处理略有不同,并且通常依赖于系统的通知机制。

  4. 由于dart_fcm可能并不是官方或广泛使用的包名,上述代码示例是基于假设的。如果dart_fcm实际上存在且功能有所不同,请参考其官方文档进行具体实现。

  5. 官方推荐的Firebase Cloud Messaging插件是firebase_messaging,如果可能的话,建议使用该插件,因为它有更广泛的社区支持和更详细的文档。

回到顶部