Flutter推送通知实战_Firebase云消息配置

在Flutter中集成Firebase云消息推送通知时遇到几个问题:

  1. 按照官方文档配置了AndroidManifest.xml和google-services.json,但测试时收不到通知,是不是漏掉了什么关键步骤?
  2. iOS端需要额外配置APNs证书吗?具体在Firebase控制台和Xcode中该如何操作?
  3. 后台消息处理时,onMessageOpenedApp回调在应用杀死状态下不触发,应该如何正确实现点击通知跳转指定页面的功能?
  4. 调试时发现通知图标显示为灰色默认图标,如何自定义Android端的通知图标?
  5. 有没有办法在不依赖Firebase的情况下测试通知功能?本地开发时需要哪些模拟手段?

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

3 回复
  1. Firebase配置:首先注册Firebase账号并创建项目,下载google-services.json,放入Flutter项目的android/app/目录。

  2. 添加依赖:在pubspec.yaml中添加firebase_messaging等依赖,然后运行flutter pub get

  3. 初始化Firebase

    • Android: 在android/build.gradle添加Google服务插件,在android/app/build.gradle应用插件。
    • iOS: 在Xcode的General设置里添加GoogleService-Info.plist
  4. 请求权限与获取Token:使用FirebaseMessaging.instance.requestPermission()请求通知权限,并调用getToken()获取设备专属Token。

  5. 监听消息:使用FirebaseMessaging.onMessageonBackgroundMessageonResumeMessage监听前台、后台及点击通知栏消息。

  6. 服务器端发送消息:通过Firebase提供的API或第三方服务发送消息到特定Token。

  7. 测试与优化:利用Firebase控制台测试推送功能,调整通知样式与内容。

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


作为屌丝程序员,配置Firebase云消息推送其实不难。首先去Firebase官网创建项目,添加Android应用,填入包名等信息下载google-services.json,放入项目app目录下。

接着在build.gradle里添加依赖和插件:

// 顶层
classpath 'com.google.gms:google-services:4.3.10'

// app模块
apply plugin: 'com.google.gms.google-services'
implementation 'com.google.firebase:firebase-messaging:23.0.0'

然后在AndroidManifest.xml中配置服务:

<service
    android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

接着实现自定义的服务类MyFirebaseMessagingService,重写onMessageReceived方法处理消息。记得在Firebase控制台配置服务器密钥和测试设备的token,就可以发送测试消息了。整个过程需要耐心调试,特别是网络权限和token获取部分。

Flutter Firebase云消息(FCM)推送通知配置实战

1. 配置Firebase项目

  1. 前往Firebase控制台创建新项目
  2. 在项目设置中添加Android和iOS应用

2. Android端配置

  1. 下载google-services.json文件并放置到android/app/目录

  2. android/build.gradle中添加:

dependencies {
    classpath 'com.google.gms:google-services:4.3.15'
}
  1. android/app/build.gradle末尾添加:
apply plugin: 'com.google.gms.google-services'

3. iOS端配置

  1. 下载GoogleService-Info.plist并添加到Xcode项目中
  2. ios/Runner/Info.plist中添加:
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>

4. 添加Flutter依赖

pubspec.yaml中添加:

dependencies:
  firebase_core: ^2.10.0
  firebase_messaging: ^14.6.0

5. 初始化代码

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

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

@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  // 处理后台消息
}

6. 获取设备Token

String? token = await FirebaseMessaging.instance.getToken();
print("FCM Token: $token");

7. 处理通知

// 前台消息处理
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
  print('Got a message whilst in the foreground!');
});

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

8. 发送测试通知

  1. 在Firebase控制台的"云消息传递"页面
  2. 点击"发送第一条消息"
  3. 输入通知标题、内容
  4. 选择目标设备或群组
  5. 发送测试消息

完成以上步骤后,你的Flutter应用就应该能接收Firebase云消息了。如需进一步定制通知样式或处理逻辑,可以参考官方文档进行扩展。

回到顶部