Flutter云消息推送插件firebase_cloud_messaging_flutter的使用

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

Flutter云消息推送插件firebase_cloud_messaging_flutter的使用

描述

通过Dart后端使用Firebase Cloud Messaging发送消息!

该插件是使用Firebase Cloud Messaging的HTTPv1 API创建的 - 您可以在Firebase Cloud Messaging API 文档中找到更多相关信息。

本项目与官方Firebase团队或Google没有任何关联。我们只是想帮助Flutter & Dart开发者在不使用任何外部服务器的情况下发送消息。

开发者联系方式

如果您有任何问题或建议,可以通过以下方式联系我们:

使用方法

设置服务账号

首先,在Firebase控制台中设置服务账号并生成新的密钥文件。从创建的文件中复制重要信息或使用FirebaseCloudMessagingServer( Your Service Account Content )加载它。

示例代码

下面是一个简单的使用示例:

import 'package:firebase_cloud_messaging_flutter/firebase_cloud_messaging_flutter.dart';

void main() async {
  /// My Service Account Json File Content
  final serviceAccountFileContent = <String, String>{
    'type': 'service_account',
    'project_id': 'your-project-id',
    'private_key_id': 'your-private-key-id',
    'private_key': '-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY\n-----END PRIVATE KEY-----\n',
    'client_email': 'your-client-email@your-project-id.iam.gserviceaccount.com',
    'client_id': 'your-client-id',
    'auth_uri': 'https://accounts.google.com/o/oauth2/auth',
    'token_uri': 'https://oauth2.googleapis.com/token',
    'auth_provider_x509_cert_url': 'https://www.googleapis.com/oauth2/v1/certs',
    'client_x509_cert_url': 'https://www.googleapis.com/robot/v1/metadata/x509/your-client-email'
  };

  /// Add Your Service Account File Content as Map
  var server = FirebaseCloudMessagingServer(
    serviceAccountFileContent,
  );

  /// Get Firebase Messaging Token [Optional, If you want to send message to specific user]
  /// Don't pass token if you want to send message to all registered users
  // String? token = await FirebaseMessaging.instance.getToken();

  /// Send a Message
  var result = await server.send(
    FirebaseSend(
      validateOnly: false,
      message: FirebaseMessage(
        notification: FirebaseNotification(
          title: 'Package by Ottoman',
          body: 'Ottoman added something new! 🔥',
        ),
        android: FirebaseAndroidConfig(
          ttl: '3s', // Time To Live, e.g., "60s" for 1 minute delay

          /// Add Delay in String. If you want to add 1 minute delay then add it like "60s"
          notification: FirebaseAndroidNotification(
            icon: 'ic_notification',
            color: '#009999',
          ),
        ),
        // token:
        //     token, // only required If you want to send message to specific user.
      ),
    ),
  );

  /// Print Request response
  print(result.toString());
}

请注意,上述代码中的serviceAccountFileContent需要替换为您自己的服务账号内容。此外,如果您想要向特定用户发送消息,请取消注释获取Token的代码,并将Token传递给FirebaseMessage构造函数。

特性和Bug

请在Issue Tracker中提交特性请求和Bug报告。

希望这个指南对您有所帮助!如果有任何问题,请随时联系我。


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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成和使用firebase_cloud_messaging_flutter(现在通常简称为firebase_messaging)插件的详细示例。这个示例将涵盖基本的配置和代码实现,以便接收云消息推送。

步骤 1: 配置Flutter项目

  1. 创建Flutter项目(如果还没有的话):

    flutter create my_flutter_app
    cd my_flutter_app
    
  2. 添加Firebase依赖到你的pubspec.yaml文件中:

    dependencies:
      flutter:
        sdk: flutter
      firebase_core: ^1.10.0  # 确保你使用最新的版本
      firebase_messaging: ^11.2.0  # 确保你使用最新的版本
    
  3. 运行Flutter pub get:

    flutter pub get
    

步骤 2: 配置Firebase项目

  1. 在Firebase控制台中创建项目并添加Android和iOS应用。

  2. 下载并配置google-services.json(Android)和GoogleService-Info.plist(iOS)文件到你的项目中。

    • 对于Android,将google-services.json文件放置在android/app/目录中。
    • 对于iOS,将GoogleService-Info.plist文件放置在ios/Runner/目录中。
  3. 在Android项目中配置Firebase:

    • 编辑android/build.gradle文件,确保包含以下代码:
      buildscript {
          repositories {
              // Check that you have the following line (if not, add it):
              google()
          }
          dependencies {
              // Add this line
              classpath 'com.google.gms:google-services:4.3.10'  // 确保使用最新版本
          }
      }
      
    • 编辑android/app/build.gradle文件,确保应用插件并添加Firebase配置:
      apply plugin: 'com.google.gms.google-services'
      
      android {
          // ...
      }
      
      dependencies {
          // Add the dependency for the Firebase SDK for Google Analytics
          implementation 'com.google.firebase:firebase-analytics:20.0.2'  // 确保使用最新版本
          // Add any other required Firebase dependencies
      }
      
  4. 在iOS项目中配置Firebase:

    • 打开ios/Runner/AppDelegate.swift文件,并添加Firebase配置代码:
      import UIKit
      import Flutter
      import Firebase
      
      @UIApplicationMain
      @objc class AppDelegate: FlutterAppDelegate {
        override func application(
          _ application: UIApplication,
          didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
        ) -> Bool {
          GeneratedPluginRegistrant.register(with: self)
          FirebaseApp.configure()
          return super.application(application, didFinishLaunchingWithOptions: launchOptions)
        }
      }
      

步骤 3: 实现Firebase Messaging功能

  1. 在Dart代码中初始化Firebase Messaging:

    import 'package:flutter/material.dart';
    import 'package:firebase_core/firebase_core.dart';
    import 'package:firebase_messaging/firebase_messaging.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
    
      // 获取Firebase Messaging实例
      FirebaseMessaging messaging = FirebaseMessaging.instance;
    
      // 配置消息监听器
      messaging.onMessage.listen((RemoteMessage message) {
        print('A new FCM message arrived!');
        // 处理接收到的消息
      });
    
      // 配置背景消息监听器(仅Android)
      if (Platform.isAndroid) {
        messaging.setBackgroundMessageHandler((RemoteMessage message) async {
          print('A new FCM background message arrived!');
          // 处理后台消息
          return null;
        });
      }
    
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Firebase Messaging Demo'),
            ),
            body: Center(
              child: Text('Check the console for messages!'),
            ),
          ),
        );
      }
    }
    
  2. 在Firebase控制台中发送测试消息以验证集成是否成功。

注意事项

  • 确保你已经正确配置了Firebase项目,并且应用的包名与Firebase控制台中配置的包名一致。
  • 在发送消息时,确保你使用了正确的目标(如设备令牌、主题等)。
  • 对于iOS,你可能需要在Xcode中启用Background Modes中的Remote notifications。

以上是一个基本的Flutter项目集成firebase_messaging插件的示例。根据你的需求,你可能需要添加更多的功能和错误处理。

回到顶部