Flutter推送通知实战 Firebase云消息配置
我在配置Firebase云消息推送时遇到问题,按照官方文档操作后,Android端始终收不到通知。具体步骤已确认:1) Firebase项目创建完成 2) google-services.json文件已放入app目录 3) 添加了firebase_messaging依赖 4) 设置了AndroidManifest的Service和权限。但调试时发现onMessage回调从未触发,logcat也没有相关错误日志。请问可能是什么环节被遗漏了?是否需要特别处理Firebase后台的服务器密钥?另外在iOS端测试时是否需要额外配置?目前使用的是flutter_local_notifications插件显示通知。
更多关于Flutter推送通知实战 Firebase云消息配置的实战教程也可以访问 https://www.itying.com/category-92-b0.html
配置Firebase云消息推送给Flutter应用:
-
创建Firebase项目:登录Firebase官网,新建项目,添加Flutter应用,记录下配置文件
google-services.json
(Android)或GoogleService-Info.plist
(iOS)。 -
添加依赖:
- 在
pubspec.yaml
中加入firebase_messaging: ^latest_version
。 - 运行
flutter pub get
。
- 在
-
初始化:
- Android:确保
android/build.gradle
里有classpath'com.google.gms:google-services:4.3.8'
,并执行apply plugin: 'com.google.gms.google-services'
。 - iOS:运行
pod install
安装依赖。
- Android:确保
-
请求权限与监听消息:
FirebaseMessaging messaging = FirebaseMessaging.instance; // 请求通知权限 NotificationSettings settings = await messaging.requestPermission(); // 获取Token String? token = await messaging.getToken(); // 监听消息 FirebaseMessaging.onMessage.listen((RemoteMessage message) { print(message.data); });
-
后台消息处理:在
android/app/src/main/AndroidManifest.xml
里设置<service>
的android:exported="true"
,并在MainActivity.kt
中实现onNewIntent
方法。 -
测试推送:使用Firebase控制台发送测试消息,检查是否正常接收。
更多关于Flutter推送通知实战 Firebase云消息配置的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
首先在Firebase控制台创建项目并添加Flutter应用,获取google-services.json。接着在Flutter项目中添加firebase_messaging依赖。
- 配置Android:将google-services.json放入android/app目录,同时在build.gradle中添加插件
classpath 'com.google.gms:google-services:4.3.10'
,并在app模块的build.gradle中应用apply plugin: 'com.google.gms.google-services'
。 - 初始化Firebase:在main函数中调用
FirebaseMessaging.instance.setForegroundNotificationPresentationOptions()
设置通知显示样式。 - 请求权限:运行时请求用户授权
await FirebaseMessaging.instance.requestPermission();
。 - 处理消息:监听
onMessage
、onBackgroundMessage
、onResumeMessage
回调处理不同场景下的消息。 - 测试:使用Firebase控制台发送测试通知。
记得在AppDelegate中注册通知,并在后台模式启用远程通知。这样就能实现基本的推送功能了。
在Flutter中配置Firebase Cloud Messaging (FCM)推送通知的步骤如下:
- 首先添加依赖:
dependencies:
firebase_core: ^2.15.1
firebase_messaging: ^14.7.0
- 初始化Firebase:
import 'package:firebase_core/firebase_core.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
- 请求通知权限并获取token:
final _firebaseMessaging = FirebaseMessaging.instance;
// 请求权限
NotificationSettings settings = await _firebaseMessaging.requestPermission(
alert: true,
badge: true,
sound: true,
);
// 获取token
String? token = await _firebaseMessaging.getToken();
print('FCM Token: $token');
- 处理前台消息:
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('Got a message whilst in the foreground!');
if (message.notification != null) {
print('Message also contained a notification: ${message.notification}');
}
});
- 处理后台消息:
在
android/app/src/main/AndroidManifest.xml
中添加:
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
然后创建对应的服务类处理消息。
- 处理点击通知:
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('Message clicked!');
});
记得先在Firebase控制台创建项目,下载google-services.json配置文件并放到android/app目录下。iOS还需要额外配置APNs证书。