Flutter后台消息处理插件firebase_messaging_backend_service的使用

Flutter后台消息处理插件firebase_messaging_backend_service的使用

在Flutter中使用firebase_messaging_backend_service插件来处理后台消息推送时,首先需要从Firebase项目中获取必要的配置数据。以下是详细的步骤和完整示例代码。

获取Firebase配置数据

  1. 登录到Firebase控制台并选择您的项目。
  2. 转到项目设置页面。
  3. 在左侧菜单中选择服务账户
  4. 点击生成新的私钥,下载包含所有必要信息的JSON文件。
  5. 将JSON文件中的信息提取出来,用于初始化FirebaseCloudMessagingService

初始化FirebaseCloudMessagingService

import 'package:firebase_messaging_backend_service/firebase_cloud_messaging_service.dart';
import 'package:jwt_decoder/jwt_decoder.dart';

class JWTDAO {
  final String clientEmail;
  final String clientId;
  final String privateKey;
  final String privateKeyId;

  JWTDAO({
    required this.clientEmail,
    required this.clientId,
    required this.privateKey,
    required this.privateKeyId,
  });
}

void main() {
  // 替换为从JSON文件中提取的实际值
  FirebaseCloudMessagingService firebaseCloudMessagingService = FirebaseCloudMessagingService(
    jwtClaim: JWTDAO(
      clientEmail: 'your_client_email', // JSON中的client_email
      clientId: 'your_client_id', // JSON中的client_id
      privateKey: 'your_private_key', // JSON中的private_key
      privateKeyId: 'your_private_key_id', // JSON中的private_key_id
    ),
    projectId: 'your_project_id', // JSON中的project_id
  );

  // 示例:订阅一个主题
  firebaseCloudMessagingService.subscribeToTopic('news');

  // 示例:发送测试消息
  firebaseCloudMessagingService.sendToDevice(
    registrationToken: ['device_token_1', 'device_token_2'],
    notification: {
      'title': '测试消息',
      'body': '这是来自Flutter应用的消息',
    },
  );
}

注意事项

  • 安全性:请勿将生成的JSON文件分发给任何人,因为它会授予对您Firebase项目的访问权限。
  • 依赖项:确保在pubspec.yaml中添加以下依赖项:
    dependencies:
      firebase_messaging_backend_service: ^版本号
      jwt_decoder: ^版本号
    

更多关于Flutter后台消息处理插件firebase_messaging_backend_service的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


firebase_messaging_backend_service 是一个用于在 Flutter 应用中处理 Firebase 云消息传递(FCM)后台消息的插件。它允许你在应用处于后台或终止状态时处理传入的消息。这对于需要在后台执行某些任务(如更新数据、显示通知等)的应用程序非常有用。

安装插件

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

dependencies:
  flutter:
    sdk: flutter
  firebase_core: latest_version
  firebase_messaging: latest_version
  firebase_messaging_background_service: latest_version

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

配置 Firebase

确保你已经正确配置了 Firebase。如果你还没有配置 Firebase,请按照以下步骤操作:

  1. Firebase 控制台 中创建一个新项目。
  2. 在项目设置中添加 Android 和 iOS 应用,并下载 google-services.jsonGoogleService-Info.plist 文件。
  3. google-services.json 文件放在 android/app 目录下。
  4. GoogleService-Info.plist 文件放在 ios/Runner 目录下。

初始化 Firebase

在你的 main.dart 文件中,初始化 Firebase:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Firebase Messaging Example'),
        ),
        body: Center(
          child: Text('Hello, Firebase Messaging!'),
        ),
      ),
    );
  }
}

配置 firebase_messaging_backend_service

main.dart 文件中,配置 firebase_messaging_backend_service

import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:firebase_messaging_background_service/firebase_messaging_background_service.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  
  // Initialize the Firebase Messaging Background Service
  FirebaseMessagingBackgroundService.initialize(onBackgroundMessageHandler);

  runApp(MyApp());
}

// Background message handler
Future<void> onBackgroundMessageHandler(RemoteMessage message) async {
  print('Handling a background message: ${message.messageId}');
  // You can perform background tasks here, such as updating data or showing a notification.
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Firebase Messaging Example'),
        ),
        body: Center(
          child: Text('Hello, Firebase Messaging!'),
        ),
      ),
    );
  }
}

请求通知权限

在 Android 上,通知权限是自动授予的。在 iOS 上,你需要请求通知权限:

void requestNotificationPermissions() async {
  FirebaseMessaging messaging = FirebaseMessaging.instance;

  NotificationSettings settings = await messaging.requestPermission(
    alert: true,
    announcement: false,
    badge: true,
    carPlay: false,
    criticalAlert: false,
    provisional: false,
    sound: true,
  );

  print('User granted permission: ${settings.authorizationStatus}');
}

你可以在应用的某个地方调用 requestNotificationPermissions() 方法来请求权限。

处理前台消息

你还可以处理应用在前台时接收到的消息:

void setupForegroundMessageHandler() {
  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    print('Got a message whilst in the foreground!');
    print('Message data: ${message.data}');

    if (message.notification != null) {
      print('Message also contained a notification: ${message.notification}');
    }
  });
}
回到顶部