Skip to content

Upgrading firebase_messaging 7 to 9

Breaking7.0.3 → 9.1.4Breaking9Platform1Deprecated5New22Changed6Fixed12Other15

BreakingUpgrade verdict

9 breaking changes and a platform requirement change.

  • 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.
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.

Breaking9
Migrates the plugin to NNBD (null safety).
Removes the deprecated FirebaseMessaging() constructor; use FirebaseMessaging.instance instead.
FirebaseMessaging()FirebaseMessaging.instance
Removes configure() in favor of specific static methods that return Streams.
FirebaseMessaging.configure()
Removes the deprecated iOSNotificationSettings API.
iOSNotificationSettings
Removes deprecated requestNotificationPermissions; use requestPermission instead.
requestNotificationPermissionsrequestPermission
Removes 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.
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()NotificationSettings
Deprecates deleteInstanceID() in favor of deleteToken().
deleteInstanceID()deleteToken()
Deprecates autoInitEnabled() in favor of the isAutoInitEnabled getter.
autoInitEnabled()isAutoInitEnabled

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