Flutter教程如何在Flutter中实现远程推送通知Remote Notification
如何在Flutter应用中集成远程推送通知功能?
目前正在开发一个Flutter应用,需要实现类似微信的消息推送功能,用户即使关闭app也能收到服务器推送的通知。尝试过Firebase Cloud Messaging,但在Android和iOS上的配置流程比较复杂,遇到以下几个具体问题:
- 在Android端集成时,Firebase后台收不到设备token,不知道是gradle配置问题还是Manifest文件缺少权限声明?
- iOS端需要哪些额外的Capability配置?测试时发现模拟器无法接收推送,真机调试有哪些注意事项?
- 有没有比Firebase更简单的替代方案?看到有人说可以用OneSignal,它的稳定性如何?
- 后台服务用Node.js开发,推送 payload 应该怎么结构化才能兼容双平台?
希望有实际经验的大佬能分享完整的实现流程,最好能包含代码片段和常见坑的解决方法。
更多关于Flutter教程如何在Flutter中实现远程推送通知Remote Notification的实战教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现远程推送通知需要使用插件firebase_messaging
。以下是步骤:
-
设置Firebase
- 创建Firebase项目并添加到Flutter应用中。
- 下载
google-services.json
(Android)和GoogleService-Info.plist
(iOS)文件,放入对应平台的目录。
-
添加依赖
在pubspec.yaml
中添加firebase_messaging
依赖:dependencies: firebase_messaging: ^14.0.0
-
初始化
在main.dart
中初始化Firebase:import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); FirebaseMessaging messaging = FirebaseMessaging.instance; await messaging.requestPermission(); // 请求通知权限 runApp(MyApp()); }
-
处理消息
- 配置消息监听:
FirebaseMessaging.onMessage.listen((RemoteMessage message) { print("收到通知:${message.notification?.title}"); });
- 后台/关闭状态消息处理:
FirebaseMessaging.onBackgroundMessage(_handleBackgroundMessage);
- 配置消息监听:
-
配置APNs与FCM
- iOS需配置APNs证书。
- Android需在Firebase控制台配置Server Key。
-
测试
使用Firebase控制台发送测试通知。
确保遵循各平台的推送通知规则和隐私政策。
更多关于Flutter教程如何在Flutter中实现远程推送通知Remote Notification的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
要在Flutter中实现远程推送通知,首先需要配置服务器端发送通知(如使用Firebase Cloud Messaging, FCM)。在Flutter端:
-
添加依赖:
firebase_messaging: ^latest_version
。 -
初始化:
- 在
main()
函数中调用FirebaseMessaging.instance.initialize()
。 - 请求通知权限:
await FirebaseMessaging.instance.requestPermission();
。
- 在
-
处理消息:
- 使用
onMessage
监听前台收到的通知。 onLaunch
和onResume
分别处理点击启动和恢复应用时的消息。
- 使用
-
获取Token:调用
FirebaseMessaging.instance.getToken()
获取设备专属的推送令牌,将此令牌提供给服务器用于发送通知。 -
配置Android和iOS:
- Android需设置
google-services.json
并修改AndroidManifest.xml
。 - iOS需配置APNs证书并在
AppDelegate.swift
中初始化。
- Android需设置
完成后即可接收远程推送通知。注意不同平台的具体配置细节和限制。
在Flutter中实现远程推送通知,可以使用firebase_messaging
插件(适用于Firebase Cloud Messaging/FCM)或flutter_local_notifications
配合后端服务。以下是FCM的实现步骤:
- 添加依赖
dependencies:
firebase_messaging: ^14.6.2
flutter_local_notifications: ^15.0.0
- Android配置
- 在
android/app/build.gradle
中设置最低SDK版本≥21 - 添加
google-services.json
(从Firebase控制台下载)
- iOS配置
- 在
ios/Runner/Info.plist
中添加:
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
- 核心代码
import 'package:firebase_messaging/firebase_messaging.dart';
// 初始化
final _firebaseMessaging = FirebaseMessaging.instance;
// 请求权限(iOS)
await _firebaseMessaging.requestPermission(
alert: true,
badge: true,
sound: true,
);
// 获取Token
String? token = await _firebaseMessaging.getToken();
print("FCM Token: $token"); // 发送到你的服务器
// 后台消息处理
FirebaseMessaging.onBackgroundMessage(_firebaseBackgroundHandler);
@pragma('vm:entry-point')
Future<void> _firebaseBackgroundHandler(RemoteMessage message) async {
// 处理后台通知
}
// 前台消息监听
FirebaseMessaging.onMessage.listen((message) {
// 显示本地通知
});
- 后端发送 使用Firebase Admin SDK或HTTP请求发送通知到FCM服务器:
POST https://fcm.googleapis.com/fcm/send
Headers:
Authorization: key=YOUR_SERVER_KEY
Content-Type: application/json
Body:
{
"to": "DEVICE_TOKEN",
"notification": {
"title": "标题",
"body": "内容"
}
}
注意事项:
- iOS需在Xcode中启用Push Notification能力
- 测试时建议使用真实设备
- 处理不同平台的通知点击行为
需要更详细功能(如通知分组、图片通知等)可扩展flutter_local_notifications
配置。