Flutter 是一个开源的 UI 软件开发工具包,用于构建跨平台的应用程序。Firebase 是 Google 提供的一套后端即服务(BaaS)解决方案,其中包括了 Firebase Cloud Messaging(FCM),用于向移动设备发送推送通知。
当应用程序在后台运行或关闭时,Flutter Firebase 消息在 iOS 上不起作用,可能是由于以下几个原因:
确保在 Info.plist
文件中添加了必要的权限配置:
<key>NSLocalNotificationUsageDescription</key>
<string>This app requires access to send notifications.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app requires access to the microphone.</string>
并在 FirebaseAppDelegate.swift
中进行相应的配置:
import UIKit
import Firebase
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
return true
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// Handle the notification
}
}
确保你使用的是最新版本的 firebase_core
和 firebase_messaging
插件:
dependencies:
firebase_core: ^2.0.0
firebase_messaging: ^10.0.0
在 Flutter 应用中,确保正确处理后台消息。可以在 FirebaseMessaging
中添加以下代码:
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());
}
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
// Handle the background message
print("Handling a background message: ${message.messageId}");
}
确保设备已经注册了 FCM,并且 Firebase 控制台中已经添加了相应的设备 token。
这个问题通常出现在需要向用户发送实时通知的应用中,例如新闻应用、社交媒体应用等。
通过以上步骤,你应该能够解决 Flutter Firebase 消息在 iOS 后台或关闭时不起作用的问题。
领取专属 10元无门槛券
手把手带您无忧上云