Flutter教程如何在Flutter中实现远程推送通知Remote Notification

如何在Flutter应用中集成远程推送通知功能?

目前正在开发一个Flutter应用,需要实现类似微信的消息推送功能,用户即使关闭app也能收到服务器推送的通知。尝试过Firebase Cloud Messaging,但在Android和iOS上的配置流程比较复杂,遇到以下几个具体问题:

  1. 在Android端集成时,Firebase后台收不到设备token,不知道是gradle配置问题还是Manifest文件缺少权限声明?
  2. iOS端需要哪些额外的Capability配置?测试时发现模拟器无法接收推送,真机调试有哪些注意事项?
  3. 有没有比Firebase更简单的替代方案?看到有人说可以用OneSignal,它的稳定性如何?
  4. 后台服务用Node.js开发,推送 payload 应该怎么结构化才能兼容双平台?

希望有实际经验的大佬能分享完整的实现流程,最好能包含代码片段和常见坑的解决方法。


更多关于Flutter教程如何在Flutter中实现远程推送通知Remote Notification的实战教程也可以访问 https://www.itying.com/category-92-b0.html

3 回复

在Flutter中实现远程推送通知需要使用插件firebase_messaging。以下是步骤:

  1. 设置Firebase

    • 创建Firebase项目并添加到Flutter应用中。
    • 下载google-services.json(Android)和GoogleService-Info.plist(iOS)文件,放入对应平台的目录。
  2. 添加依赖
    pubspec.yaml中添加firebase_messaging依赖:

    dependencies:
      firebase_messaging: ^14.0.0
    
  3. 初始化
    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());
    }
    
  4. 处理消息

    • 配置消息监听:
      FirebaseMessaging.onMessage.listen((RemoteMessage message) {
        print("收到通知:${message.notification?.title}");
      });
      
    • 后台/关闭状态消息处理:
      FirebaseMessaging.onBackgroundMessage(_handleBackgroundMessage);
      
  5. 配置APNs与FCM

    • iOS需配置APNs证书。
    • Android需在Firebase控制台配置Server Key。
  6. 测试
    使用Firebase控制台发送测试通知。

确保遵循各平台的推送通知规则和隐私政策。

更多关于Flutter教程如何在Flutter中实现远程推送通知Remote Notification的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


要在Flutter中实现远程推送通知,首先需要配置服务器端发送通知(如使用Firebase Cloud Messaging, FCM)。在Flutter端:

  1. 添加依赖:firebase_messaging: ^latest_version

  2. 初始化:

    • main()函数中调用FirebaseMessaging.instance.initialize()
    • 请求通知权限:await FirebaseMessaging.instance.requestPermission();
  3. 处理消息:

    • 使用onMessage监听前台收到的通知。
    • onLaunchonResume分别处理点击启动和恢复应用时的消息。
  4. 获取Token:调用FirebaseMessaging.instance.getToken()获取设备专属的推送令牌,将此令牌提供给服务器用于发送通知。

  5. 配置Android和iOS:

    • Android需设置google-services.json并修改AndroidManifest.xml
    • iOS需配置APNs证书并在AppDelegate.swift中初始化。

完成后即可接收远程推送通知。注意不同平台的具体配置细节和限制。

在Flutter中实现远程推送通知,可以使用firebase_messaging插件(适用于Firebase Cloud Messaging/FCM)或flutter_local_notifications配合后端服务。以下是FCM的实现步骤:

  1. 添加依赖
dependencies:
  firebase_messaging: ^14.6.2
  flutter_local_notifications: ^15.0.0
  1. Android配置
  • android/app/build.gradle中设置最低SDK版本≥21
  • 添加google-services.json(从Firebase控制台下载)
  1. iOS配置
  • ios/Runner/Info.plist中添加:
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
  1. 核心代码
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) {
  // 显示本地通知
});
  1. 后端发送 使用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配置。

回到顶部