- [added] Add support for the new FCM registration ID.
- [fixed] Fix missing database crash on launch. (#14880)
- [fixed] Fix Xcode 26 crash from missing
NSUserActivityTypeBrowsingWebsymbol. Note that this fix isn't in the 12.1.0 zip and Carthage distributions, but will be included from 12.2.0 onwards. (#15159)
- [fixed] Fix a potential SQL injection issue. (#14846).
- [fixed] Migrate FCM codebase to new NSKeyedUnarchiver APIs. (#14424).
- [fixed] Don't cache FCM registration token operations. (#14352).
- [fixed] Improve token-fetch failure logging with detailed error info. (#13997).
- [fixed] Completed Messaging's transition to NSSecureCoding (#12343).
- [fixed] Renamed "initWithFileName" internal method that was causing submission issues for some users. (#13134).
- [fixed] Fixed the APS Environment key on visionOS. (#13173)
- [fixed] Fixed bug preventing Messaging from working with a custom sqlite3 dependency (#12900).
- [fixed] [CocoaPods] Fix "no rule" warning when running
pod install. (#12511)
- [fixed] Fix 10.19.0 regression where the FCM registration token was nil at first app start after update from 10.19.0 or earlier. (#12245)
- [changed] Adopt NSSecureCoding for internal classes. (#12075)
- [changed] Removing fiam scoped tokens set by old FIAM SDK(s) from keychain if exists (b/284207019).
- [fixed] Configure flow validates existence of an APNS token before fetching an FCM token (#10742). This also addresses the scenario 1 mentioned in the comment - #10679 (comment)
- [fixed] Fixed a crash for strongSelf dereference (#10707).
- [changed] On app startup, an APNS Token must be provided to FCM SDK before retrieving an FCM Token otherwise an error will be returned as part of the completion.
- [changed] Allow notification support on iOS 16 Simulator on Xcode 14 (#9968) (Reference: Xcode 14 Release Notes -> Simulator -> New Features: https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes)
- [fixed] App bundle identifier gets incorrectly shortened for watchOS apps created on Xcode 14 (#10147)
- [changed] Improved reporting for SQLite errors when failing to open a local database (#8699).
- [fixed] Fixed an issue that token is not associated with APNS token during app start. (#8738)
- [changed] Removed iOS version check from
FIRMessagingExtensionHelper.h(#8492). - [added] Added new API
FIRMessagingExtensionHelper exportDeliveryMetricsToBigQuerythat allows developers to enable notification delivery metrics that exports to BigQuery. (#6181) - [fixed] Fixed an issue that delete token no longer works. (#8491)
- [fixed] Fixed an issue that local scheduled notification is not set correctly due to sound type. (#8172)
- [fixed] Fixed an issue that notification open is not logged to Analytics correctly when app is completely shut off. (#7707, #8128).
- [changed] Remove the Instance ID dependency from Firebase Cloud Messaging. This is a breaking change for FCM users who use the deprecated Instance ID API to manage registration tokens. Users should migrate to FCM's token APIs by following the migration guide: https://firebase.google.com/docs/projects/manage-installations#fid-iid. (#7836)
- [changed] Refactor Messaging to internally not depending on InstanceID, but can co-exist. Will remove InstanceID dependency in the next Firebase breaking change. (#7814)
- [fixed] Fixed an issue in which, when checking storage size before writing to disk, the client was checking document folders that were no longer used. (#7480)
- [fixed] Fixed build warnings introduced with Xcode 12.5. (#7433)
- [fixed] Fixed completion handler issue in
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)method. (#6863)
- [changed] Remove the deprecated FCM direct channel API and Upstream send API. (#6430)
- [changed] The
messaging:didReceiveRegistrationToken:should be able to return a null token. Update the API parameter fcmToken to be nullable. (#5339) - [fixed] Fixed an issue that downloading an image failed when there's no extension in the file name but MIME type is set. (#6590)
- [added] InstanceID is deprecated, add macro to suppress deprecation warning. (#6585)
- [added] Added new token APIs to get and delete the default FCM registration token asynchronously. Also added a new
Messaging.delete(completion:)method that deletes all FCM registration tokens and checkin data. (#6313)
- [fixed] Fixed an issue that topic doesn't work in watchOS. (#6160)
- [fixed] Improved Xcode completion of public API completion handlers in Swift. (#6278)
- [changed] Remove logic that is executed for iOS 7 and below. (#5835)
- [fixed] Fix documentation warning exposed by Xcode 12. (#5876)
- [changed] Functionally neutral updated import references for dependencies. (#5824)
- [changed] Use UNNotificationRequest to schedule local notification for local timezone notification for iOS 10 and above. This should also fix the issue that '%' was not properly shown in title and body. (#5667)
- [fixed] Fixed Maltese language key for language targeting. (#5702)
- [changed] Updated NSError with a failure reason to give more details on the error. (#5511)
- [changed] Changed the location of source under FirebaseMessaging folder to fit the current repository organization. (#5476)
- [fixed] Fixed an issue that when a token is deleted, the token refresh notification and delegate is not triggered. (#5338)
- [changed] Deprecated FCM direct channel messaging via
shouldEstablishDirectChannel. Instead, use APNs for downstream message delivery. Addcontent_availablekey to your payload if you want to continue use legacy APIs, but we strongly recommend HTTP v1 API as it provides full APNs support. The deprecated API will be removed in Firebase 7. (#4710) - [changed] Deprecated upstream messaging API. For realtime updates, use Cloud Firestore, Realtime Database, or other services. The deprecated API will be removed in Firebase 7. (#4710)
- [fixed] Use secure coding for Messaging's pending topics. (#3686)
- [added] Firebase Pod support for watchOS:
pod 'Firebase/Messaging'in addition topod 'FirebaseMessaging'. (#4807) - [fixed] Fix FIRMessagingExtensionHelper crash in unit tests when
attachment == nil. (#4689) - [fixed] Fix FIRMessagingRmqManager crash when database is removed. This only happens when device has a corrupted database file. (#4771)
- [added] Added watchOS support for Firebase Messaging. This enables FCM push notification function on watch only app or independent watch app. (#4016)
- [added] Added a new transitive dependency on the Firebase Installations SDK. The Firebase Installations SDK introduces the Firebase Installations API. Developers that use API-restrictions for their API-Keys may experience blocked requests (https://stackoverflow.com/questions/58495985/). A solution is available here.
- [fixed] Fix component startup time. (#4137)
- [changed] Moved message queue delete operation to a serial queue to avoid race conditions in unit tests. (#4236)
- [changed] Moved reliable message queue database operation off main thread. (#4053)
- [fixed] Fixed IID and Messaging container instantiation timing issue. (#4030)
- [changed] Internal cleanup and remove migration logic from document folder to application folder. (#4033, #4045)
- [changed] Internal cleanup. (#3857)
- [fixed] Mute FCM deprecated warnings with Xcode 11 and min iOS >= 10. (#3857)
- [fixed] Fixed notification open event is not logged when scheduling a local timezone message. (#3670, #3638)
- [fixed] Fixed FirebaseApp.delete() results in unusable Messaging singleton. (#3411)
- [changed] Cleaned up the documents, unused macros, and folders. (#3490, #3537, #3556, #3498)
- [changed] Updated the header path to pod repo relative. (#3527)
- [fixed] Fixed singleton functionality after a FirebaseApp is deleted and recreated. (#3411)
- [fixed] Fixed hang when token is not available before topic subscription and unsubscription. (#3438)
- [fixed] Fixed Xcode 11 tvOS build issue - (#3216)
- [feature] Adding macOS support for Messaging. You can now send push notification to your mac app with Firebase Messaging.(#2880)
- [fixed] Disable data protection when opening the Rmq2PersistentStore. (#2963)
- [fixed] Fixed race condition checkin is deleted before writing during app start. This cleans up the corrupted checkin and fixes #2438. (#2860)
- [fixed] Separate APNS proxy methods in GULAppDelegateSwizzler so developers don't need to swizzle APNS related method unless explicitly requested, this fixes #2807. (#2835)
- [changed] Clean up code. Remove extra layer of class. (#2853)
- [removed] Remove deprecated
useMessagingDelegateForDirectChannelproperty.(#2711) All direct channels (non-APNS) messages will be handled bymessaging:didReceiveMessage:. Previously in iOS 9 and below, the direct channel messages are handled inapplication:didReceiveRemoteNotification:fetchCompletionHandler:and this behavior can be changed by settinguseMessagingDelegateForDirectChannelto true. Now that all messages by default are handled inmessaging:didReceiveMessage:. This boolean value is no longer needed. If you already have set useMessagingDelegateForDirectChannel to YES, or handle all your direct channel messages inmessaging:didReceiveMessage:. This change should not affect you. - [removed] Remove deprecated API to connect direct channel. (#2717) Should use
shouldEstablishDirectChannelproperty instead. - [changed]
GULAppDelegateSwizzleris used for the app delegate swizzling. (#2683)
- [added] Add image support for notification. (#2644)
- [added] Adding community support for tvOS. (#2428)
- [fixed] Replaced
NSUserDefaultswithGULUserDefaultsto avoid potential crashes. (#2443)
- [changed] Internal code cleanup.
- [changed] Use the new registerInternalLibrary API to register with FirebaseCore. (#2137)
- [fixed] Fixed an issue where messages failed to be delivered to the recipient's time zone. (#1946)
- [added] Now you can access the message ID of FIRMessagingRemoteMessage object. (#1861)
- [added] Add a new boolean value useFIRMessagingDelegateForDirectMessageDelivery if you
want all your direct channel data messages to be delivered in
FIRMessagingDelegate. If you don't use the new flag, for iOS 10 and above,
direct channel data messages are delivered in
FIRMessagingDelegate messaging:didReceiveMessage:; for iOS 9 and below, direct channel data messages are delivered in Apple'sAppDelegate application:didReceiveRemoteNotification:fetchCompletionHandler:. So if you set the useFIRMessagingDelegateForDirectMessageDelivery to true, direct channel data messages are delivered in FIRMessagingDelegate across all iOS versions. (#1875) - [fixed] Fix an issue that callback is not triggered when topic name is invalid. (#1880)
- [fixed] Ensure NSUserDefaults is persisted properly before app close. (#1646)
- [changed] Internal code cleanup. (#1666)
- [fixed] Added support for global Firebase data collection flag. (#1219)
- [fixed] Fixed an issue where Messaging wouldn't properly unswizzle swizzled delegate methods. (#1481)
- [fixed] Fixed an issue that Messaging doesn't compile inside app extension. (#1503)
- [fixed] Fixed an issue that client should suspend the topic requests when token is not available and resume the topic operation when the token is generated.
- [fixed] Corrected the deprecation warning when subscribing to or unsubscribing from an invalid topic. (#1397)
- [changed] Removed unused heart beat time stamp tracking.
- [added] Added a warning message when subscribing to topics with incorrect name formats.
- [fixed] Silenced a deprecation warning in FIRMessaging.
- [fixed] Clean up a few deprecation warnings.
- [removed] Remove deprecated delegate property
remoteMessageDelegate, please usedelegateinstead. - [removed] Remove deprecated method
messaging:didRefreshRegistrationToken:defined in FIRMessagingDelegate protocol, please usemessaging:didReceiveRegistrationToken:instead. - [removed] Remove deprecated method
applicationReceivedRemoteMessage:defined in FIRMessagingDelegate protocol, please usemessaging:didReceiveMessage:instead. - [fixed] Fix an issue that data messages were not tracked successfully.
- [added] Add new methods that provide completion handlers for topic subscription and unsubscription.
- [changed] Improve documentation on the usage of the autoInitEnabled property.
- [added] Added a new property autoInitEnabled to enable and disable FCM token auto generation.
- [fixed] Fixed an issue where notification delivery would fail after changing language settings.
- [added] Added swizzling of additional UNUserNotificationCenterDelegate method, for more accurate Analytics logging.
- [fixed] Fixed a swizzling issue with unimplemented UNUserNotificationCenterDelegate methods.
- [fixed] Fixed an issue where the FCM token was not associating correctly with an APNs device token, depending on when the APNs device token was made available.
- [fixed] Fixed an issue where FCM tokens for different Sender IDs were not associating correctly with an APNs device token.
- [fixed] Fixed an issue that was preventing the FCM direct channel from being established on the first start after 24 hours of being opened.
- [changed] Clarified a log message about method swizzling being enabled.
- [fixed] Moved to safer use of NSAsserts, instead of lower-level
__builtin_trap()method. - [added] Added logging of the underlying error code for an error trying to create or open an internal database file.
- [changed] Removed old logic which was saving the SDK version to NSUserDefaults.
- [fixed] Fixed an issue where setting
shouldEstablishDirectChannelin a background thread was triggering the Main Thread Sanitizer in Xcode 9. - [changed] Removed some old logic related to logging.
- [changed] Added some additional logging around errors while method swizzling.
- [feature] Introduced an improved interface for Swift 3 developers
- [added] Added new properties and methods to simplify FCM token management
- [added] Added property, APNSToken, to simplify APNs token management
- [added] Added new delegate method to be notified of FCM token refreshes
- [added] Added new property, shouldEstablishDirectChannel, to simplify connecting directly to FCM
- [fixed] Fixed an issue where custom UNNotificationCenterDelegates may not have been swizzled (if swizzling was enabled)
- [fixed] Fixed a issue iOS 8.0 and 8.1 devices using scheduled notifications
- [changed] Improvements to console logging
- [fixed] Improved topic subscription logic for more reliable subscriptions.
- [fixed] Reduced memory footprint and CPU usage when subscribing to multiple topics.
- [changed] Better documentation in the public headers.
- [changed] Switched from ProtocolBuffers2 to protobuf compiler.
- [changed] Better documentation on the public headers.
- [added] Support the UserNotifications framework introduced in iOS 10.
- [added] Add a new API,
-applicationReceivedRemoteMessage:, to FIRMessaging. This allows apps to receive data messages from FCM on devices running iOS 10 and above.
- [changed] Move FIRMessaging related plists to ApplicationSupport directory.
- [changed] Change flag to disable swizzling to FirebaseAppDelegateProxyEnabled.
- [changed]
-[FIRMessaging appDidReceiveMessage:]returns FIRMessagingMessageInfo object. - [fixed] Minor bug fixes.
- [changed] Accept topic names without /topics prefix.
- [fixed] Add Swift annotations to public static accessors.
- [feature] New Firebase messaging API.