无需Firebase CLI,如何在Flutter中配置仅使用FCM的Firebase项目
在Flutter中无需Firebase CLI配置仅使用FCM的方案
一、手动配置Firebase项目(无需CLI)
不用Firebase CLI也能完成FCM的基础配置,全程通过Firebase控制台手动操作:
- 登录Firebase控制台,创建新项目,可直接跳过Google Analytics配置(仅用FCM不需要)。
- 添加Android应用:
- 输入Android包名(和Flutter项目的
android/app/build.gradle里的applicationId一致)。 - 下载
google-services.json文件,将其放到Flutter项目的android/app目录下。 - 手动配置Android Gradle:
- 在
android/build.gradle的buildscript块中添加Google服务插件依赖:dependencies { // 其他依赖 classpath 'com.google.gms:google-services:4.4.0' } - 在
android/app/build.gradle末尾添加:apply plugin: 'com.google.gms.google-services'
- 在
- 输入Android包名(和Flutter项目的
- 添加iOS应用:
- 输入iOS Bundle ID(和Flutter项目的
ios/Runner.xcodeproj/project.pbxproj里的PRODUCT_BUNDLE_IDENTIFIER一致)。 - 下载
GoogleService-Info.plist文件,拖入Flutter项目的ios/Runner目录,确保勾选"Copy items if needed"。 - 在Xcode中打开
ios/Runner.xcworkspace,进入Runner target的Signing & Capabilities,添加"Push Notifications"和"Background Modes"(勾选"Remote notifications")。
- 输入iOS Bundle ID(和Flutter项目的
二、Flutter依赖配置
在pubspec.yaml中添加必要的依赖:
dependencies: flutter: sdk: flutter firebase_core: ^2.24.0 firebase_messaging: ^14.7.11
执行flutter pub get安装依赖。
三、可直接使用的FCM核心代码示例
以下是涵盖初始化、Token获取、消息监听的完整代码:
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { // 后台接收消息时的处理逻辑 print("处理后台消息: ${message.messageId}"); } void main() async { WidgetsFlutterBinding.ensureInitialized(); // 初始化Firebase核心 await Firebase.initializeApp(); // 设置后台消息处理器 FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); // 获取设备FCM Token String? token = await FirebaseMessaging.instance.getToken(); print("设备FCM Token: $token"); // 监听前台消息 FirebaseMessaging.onMessage.listen((RemoteMessage message) { print("收到前台消息"); print("标题: ${message.notification?.title}"); print("内容: ${message.notification?.body}"); // 可在这里弹出本地通知 }); // 监听应用在后台时点击通知的事件 FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { print("点击通知打开应用"); // 可在这里跳转指定页面 }); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'FCM Demo', home: Scaffold( appBar: AppBar(title: const Text('FCM测试')), body: const Center(child: Text('FCM配置完成')), ), ); } }
四、额外补充:本地通知适配(可选)
如果需要在前台收到FCM消息时弹出通知,需添加flutter_local_notifications依赖,示例代码片段:
// 初始化本地通知 late FlutterLocalNotificationsPlugin _localNotificationsPlugin; void initLocalNotifications() { const AndroidInitializationSettings androidSettings = AndroidInitializationSettings('@mipmap/ic_launcher'); const DarwinInitializationSettings iosSettings = DarwinInitializationSettings(); const InitializationSettings settings = InitializationSettings(android: androidSettings, iOS: iosSettings); _localNotificationsPlugin = FlutterLocalNotificationsPlugin(); _localNotificationsPlugin.initialize(settings); } // 在前台消息监听中调用 FirebaseMessaging.onMessage.listen((RemoteMessage message) { if (message.notification != null) { _localNotificationsPlugin.show( 0, message.notification?.title, message.notification?.body, const NotificationDetails( android: AndroidNotificationDetails('channel_id', 'channel_name', importance: Importance.max), iOS: DarwinNotificationDetails(), ), ); } });
五、测试方法
- 使用Firebase控制台的"Cloud Messaging"模块,输入设备Token或选择目标应用,发送测试消息。
- 或使用curl命令发送:
curl -X POST "https://fcm.googleapis.com/fcm/send" \ -H "Authorization: key=你的服务器密钥" \ -H "Content-Type: application/json" \ -d '{ "to": "设备FCM Token", "notification": { "title": "测试标题", "body": "测试内容" } }'
服务器密钥可在Firebase控制台的项目设置→云消息传递中获取。
内容的提问来源于stack exchange,提问作者Aryan Bisht
相关产品推荐
相关产品推荐

