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

3 回复

配置Firebase云消息推送给Flutter应用:

  1. 创建Firebase项目:登录Firebase官网,新建项目,添加Flutter应用,记录下配置文件google-services.json(Android)或GoogleService-Info.plist(iOS)。

  2. 添加依赖

    • pubspec.yaml中加入firebase_messaging: ^latest_version
    • 运行flutter pub get
  3. 初始化

    • Android:确保android/build.gradle里有classpath 'com.google.gms:google-services:4.3.8',并执行apply plugin: 'com.google.gms.google-services'
    • iOS:运行pod install安装依赖。
  4. 请求权限与监听消息

    FirebaseMessaging messaging = FirebaseMessaging.instance;
    // 请求通知权限
    NotificationSettings settings = await messaging.requestPermission();
    // 获取Token
    String? token = await messaging.getToken();
    // 监听消息
    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      print(message.data);
    });
    
  5. 后台消息处理:在android/app/src/main/AndroidManifest.xml里设置<service>android:exported="true",并在MainActivity.kt中实现onNewIntent方法。

  6. 测试推送:使用Firebase控制台发送测试消息,检查是否正常接收。

更多关于Flutter推送通知实战 Firebase云消息配置的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


首先在Firebase控制台创建项目并添加Flutter应用,获取google-services.json。接着在Flutter项目中添加firebase_messaging依赖。

  1. 配置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'
  2. 初始化Firebase:在main函数中调用FirebaseMessaging.instance.setForegroundNotificationPresentationOptions()设置通知显示样式。
  3. 请求权限:运行时请求用户授权await FirebaseMessaging.instance.requestPermission();
  4. 处理消息:监听onMessageonBackgroundMessageonResumeMessage回调处理不同场景下的消息。
  5. 测试:使用Firebase控制台发送测试通知。

记得在AppDelegate中注册通知,并在后台模式启用远程通知。这样就能实现基本的推送功能了。

在Flutter中配置Firebase Cloud Messaging (FCM)推送通知的步骤如下:

  1. 首先添加依赖:
dependencies:
  firebase_core: ^2.15.1
  firebase_messaging: ^14.7.0
  1. 初始化Firebase:
import 'package:firebase_core/firebase_core.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}
  1. 请求通知权限并获取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');
  1. 处理前台消息:
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}');
  }
});
  1. 处理后台消息: 在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>

然后创建对应的服务类处理消息。

  1. 处理点击通知:
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
  print('Message clicked!');
});

记得先在Firebase控制台创建项目,下载google-services.json配置文件并放到android/app目录下。iOS还需要额外配置APNs证书。

回到顶部