Upgrading firebase_messaging 7 to 9
Breaking7.0.3 → 9.1.4Breaking9Platform1Deprecated5New22Changed6Fixed12Other15
BreakingUpgrade verdict
9 breaking changes and a platform requirement change.
In plain terms
- The package now uses Dart's null safety, so code that uses it may need null-safe types and updated dependencies.
- You can no longer create FirebaseMessaging with a constructor; use the shared FirebaseMessaging.instance instead.
- The old setup method is gone. You now register message handlers through separate stream-based methods.
- The old iOSNotificationSettings class is gone; use the current notification settings API instead.
Must act Top 5 of 14 that need code or config changes
Dart SDK requirement changed in 9.1.0: >=2.0.0 <3.0.0 → >=2.12.0 <3.0.0.
Flutter requirement changed in 9.0.0-1.0.nullsafety.0: >=1.12.13+hotfix.5 <2.0.0 → >=1.12.13+hotfix.5.
Adds firebase_core_platform_interface ^4.0.1, firebase_messaging_platform_interface ^2.1.4, firebase_messaging_web ^1.0.7.
Moves firebase_core ^0.5.0+1 → ^1.1.1, meta ^1.0.4 → ^1.3.0. Your build may pick other versions.
What you must change
Breaking9
Migrates the plugin to NNBD (null safety).
Removes the deprecated
FirebaseMessaging() constructor; use FirebaseMessaging.instance instead.FirebaseMessaging()FirebaseMessaging.instanceRemoves configure() in favor of specific static methods that return Streams.
FirebaseMessaging.configure()Removes the deprecated
iOSNotificationSettings API.iOSNotificationSettingsRemoves deprecated
requestNotificationPermissions; use requestPermission instead.requestNotificationPermissionsrequestPermissionRemoves deprecated
autoInitEnabled(); use setAutoInitEnabled() instead.autoInitEnabled()setAutoInitEnabled()Removes deprecated
deleteInstanceID(); use deleteToken() instead.deleteInstanceID()deleteToken()Sets the osx minimum supported platform version to 10.12.
Forwards port to firebase-ios-sdk v7.3.0, making iOS 10 the minimum supported version.
Platform1
Bumps the minimum Dart SDK constraint to 2.12.0.
Deprecations to plan for
Deprecated4
Deprecates calling FirebaseMessaging() in favor of FirebaseMessaging.instance and FirebaseMessaging.instanceFor().
FirebaseMessaging()FirebaseMessaging.instanceFirebaseMessaging.instanceFor()Deprecates the IosNotificationSettings class in favor of named arguments to requestPermission().
IosNotificationSettingsrequestNotificationPermissions()requestPermission()NotificationSettingsDeprecates deleteInstanceID() in favor of deleteToken().
deleteInstanceID()deleteToken()Deprecates autoInitEnabled() in favor of the isAutoInitEnabled getter.
autoInitEnabled()isAutoInitEnabledAPI changes
Generated by DepDelta from published Dart source. Not mixed with prose notes.
- removed:
class IosNotificationSettings - removed:
ctor FirebaseMessaging() - removed:
ctor FirebaseMessaging.private(MethodChannel channel) - removed:
ctor IosNotificationSettings({ this.sound = …, this.alert = …, this.badge = …, this.provisional = …, }) - removed:
field IosNotificationSettings.alert: final bool - removed:
field IosNotificationSettings.badge: final bool - removed:
field IosNotificationSettings.provisional: final bool - removed:
field IosNotificationSettings.sound: final bool - removed:
get FirebaseMessaging.onIosSettingsRegistered: Stream<IosNotificationSettings> - removed:
method FirebaseMessaging.autoInitEnabled(): Future<bool> - removed:
method FirebaseMessaging.configure({ MessageHandler onMessage, MessageHandler onBackgroundMessage, MessageHandler onLaunch, MessageHandler onResume, }): void - removed:
method FirebaseMessaging.deleteInstanceID(): Future<bool> - removed:
method FirebaseMessaging.requestNotificationPermissions([ IosNotificationSettings iosSettings = …, ]): FutureOr<bool> - removed:
method IosNotificationSettings.toMap(): Map<String, dynamic> - removed:
method IosNotificationSettings.toString(): String - removed:
typedef Future<dynamic> MessageHandler(Map<String, dynamic> message) - changed:
class FirebaseMessaging → class FirebaseMessaging extends FirebasePluginPlatform - changed:
method FirebaseMessaging.getToken(): Future<String> → method FirebaseMessaging.getToken({ String? vapidKey, }): Future<String?> - added:
field FirebaseMessaging.app: FirebaseApp - added:
get FirebaseMessaging.isAutoInitEnabled: bool - added:
method FirebaseMessaging.deleteToken({String? senderId}): Future<void> - added:
method FirebaseMessaging.getAPNSToken(): Future<String?> - added:
method FirebaseMessaging.getInitialMessage(): Future<RemoteMessage?> - added:
method FirebaseMessaging.getNotificationSettings(): Future<NotificationSettings> - added:
method FirebaseMessaging.requestPermission({ bool alert = …, bool announcement = …, bool badge = …, bool carPlay = …, bool criticalAlert = …, bool provisional = …, bool sound = …, }): Future<NotificationSettings> - added:
method FirebaseMessaging.sendMessage({ String? to, Map<String, String>? data, String? collapseKey, String? messageId, String? messageType, int? ttl, }): Future<void> - added:
method FirebaseMessaging.setForegroundNotificationPresentationOptions({ bool alert = …, bool badge = …, bool sound = …, }): Future<void> - added:
static get FirebaseMessaging.instance: FirebaseMessaging - added:
static get FirebaseMessaging.onMessage: Stream<RemoteMessage> - added:
static get FirebaseMessaging.onMessageOpenedApp: Stream<RemoteMessage> - added:
static method FirebaseMessaging.onBackgroundMessage(BackgroundMessageHandler handler): void