推送通常使用 firebase_messaging。下面给出初始化、权限与回调处理的完整流程。
0. 依赖
dependencies:
firebase_messaging: ^14.7.10
1. 初始化
Future<void> initPush() async {
FirebaseMessaging messaging = FirebaseMessaging.instance;
await messaging.requestPermission();
final token = await messaging.getToken();
Log.d('push', 'token=$token');
}
2. 前台消息
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
// 前台处理
});
3. 后台消息
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
// 后台处理
}
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
4. 点击通知打开
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
// 跳转页面
});
5. 常见坑点
- 未配置 Firebase:初始化失败
- 权限未申请:iOS 无法接收
- 后台 handler 未注册:后台消息丢失
6. 实践清单
- 初始化并获取 token
- 前台/后台回调处理
- 点击通知跳转