Flutter云消息推送插件firebase_cloud_messaging_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
更多关于Flutter云消息推送插件firebase_cloud_messaging_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成和使用firebase_cloud_messaging_flutter
(现在通常简称为firebase_messaging
)插件的详细示例。这个示例将涵盖基本的配置和代码实现,以便接收云消息推送。
步骤 1: 配置Flutter项目
-
创建Flutter项目(如果还没有的话):
flutter create my_flutter_app cd my_flutter_app
-
添加Firebase依赖到你的
pubspec.yaml
文件中:dependencies: flutter: sdk: flutter firebase_core: ^1.10.0 # 确保你使用最新的版本 firebase_messaging: ^11.2.0 # 确保你使用最新的版本
-
运行Flutter pub get:
flutter pub get
步骤 2: 配置Firebase项目
-
在Firebase控制台中创建项目并添加Android和iOS应用。
-
下载并配置
google-services.json
(Android)和GoogleService-Info.plist
(iOS)文件到你的项目中。- 对于Android,将
google-services.json
文件放置在android/app/
目录中。 - 对于iOS,将
GoogleService-Info.plist
文件放置在ios/Runner/
目录中。
- 对于Android,将
-
在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 }
- 编辑
-
在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功能
-
在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!'), ), ), ); } }
-
在Firebase控制台中发送测试消息以验证集成是否成功。
注意事项
- 确保你已经正确配置了Firebase项目,并且应用的包名与Firebase控制台中配置的包名一致。
- 在发送消息时,确保你使用了正确的目标(如设备令牌、主题等)。
- 对于iOS,你可能需要在Xcode中启用Background Modes中的Remote notifications。
以上是一个基本的Flutter项目集成firebase_messaging
插件的示例。根据你的需求,你可能需要添加更多的功能和错误处理。