[fixed] Fixed a crash for strongSelf dereference (#10707).
10.4.0
[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.
[fixed] App bundle identifier gets incorrectly shortened for watchOS apps created on Xcode 14 (#10147)
8.12.0
[changed] Improved reporting for SQLite errors when failing to open a local database (#8699).
8.11.0
[fixed] Fixed an issue that token is not associated with APNS token during app start. (#8738)
8.6.0
[changed] Removed iOS version check from FIRMessagingExtensionHelper.h (#8492).
[added] Added new API FIRMessagingExtensionHelper exportDeliveryMetricsToBigQuery that allows developers to enable notification delivery metrics that exports to BigQuery. (#6181)
[fixed] Fixed an issue that delete token no longer works. (#8491)
8.2.0
[fixed] Fixed an issue that local scheduled notification is not set correctly due to sound type. (#8172)
8.1.0
[fixed] Fixed an issue that notification open is not logged to Analytics correctly when app is completely shut off. (#7707, #8128).
8.0.0
[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)
7.11.0
[changed] Refactor Messaging to internally not depending on InstanceID, but can co-exist. Will remove InstanceID dependency in the next Firebase breaking change. (#7814)
7.7.0
[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)
7.6.0
[fixed] Fixed build warnings introduced with Xcode 12.5. (#7433)
7.1.0
[fixed] Fixed completion handler issue in application(_:didReceiveRemoteNotification:fetchCompletionHandler:) method. (#6863)
7.0.0
[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)
4.7.1
[added] InstanceID is deprecated, add macro to suppress deprecation warning. (#6585)
4.7.0
[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)
4.6.2
[fixed] Fixed an issue that topic doesn't work in watchOS. (#6160)
[fixed] Improved Xcode completion of public API completion handlers in Swift. (#6278)
4.6.1
[changed] Remove logic that is executed for iOS 7 and below. (#5835)
4.6.0
[fixed] Fix documentation warning exposed by Xcode 12. (#5876)
[changed] Functionally neutral updated import references for dependencies. (#5824)
4.5.0
[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)
4.4.1
[changed] Updated NSError with a failure reason to give more details on the error. (#5511)
4.4.0
[changed] Changed the location of source under FirebaseMessaging folder to fit the current repository organization. (#5476)
4.3.1
[fixed] Fixed an issue that when a token is deleted, the token refresh notificaiton and delegate is not triggered. (#5338)
4.3.0
[changed] Deprecated FCM direct channel messaging via shouldEstablishDirectChannel. Instead, use APNs for downstream message delivery. Add content_available key 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)
4.2.1
[added] Firebase Pod support for watchOS: pod 'Firebase/Messaging' in addition to pod '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)
4.2.0
[added] Added watchOS support for Firebase Messaging. This enables FCM push notification function on watch only app or independent watch app. (#4016)
[feature] Adding macOS support for Messaging. You can now send push notification to your mac app with Firebase Messaging.(#2880)
4.0.2
[fixed] Disable data protection when opening the Rmq2PeristentStore. (#2963)
4.0.1
[fixed] Fixed race condition checkin is deleted before writing during app start. This cleans up the corrupted checkin and fixes #2438. (#2860)
[fixed] Separete 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)
4.0.0
[removed] Remove deprecated useMessagingDelegateForDirectChannel property.(#2711) All direct channels (non-APNS) messages will be handled by messaging:didReceiveMessage:. Previously in iOS 9 and below, the direct channel messages are handled in application:didReceiveRemoteNotification:fetchCompletionHandler: and this behavior can be changed by setting useMessagingDelegateForDirectChannel to true. Now that all messages by default are handled in messaging:didReceiveMessage:. This boolean value is no longer needed. If you already have set useMessagingDelegateForDirectChannel to YES, or handle all your direct channel messages in messaging:didReceiveMessage:. This change should not affect you.
[removed] Remove deprecated API to connect direct channel. (#2717) Should use shouldEstablishDirectChannel property instead.
[changed] GULAppDelegateSwizzler is used for the app delegate swizzling. (#2683)
3.5.0
[added] Add image support for notification. (#2644)
3.4.0
[added] Adding community support for tvOS. (#2428)
3.3.2
[fixed] Replaced NSUserDefaults with GULUserDefaults to avoid potential crashes. (#2443)
3.3.1
[changed] Internal code cleanup.
3.3.0
[changed] Use the new registerInternalLibrary API to register with FirebaseCore. (#2137)
3.2.1
[fixed] Fixed an issue where messages failed to be delivered to the recipient's time zone. (#1946)
3.2.0
[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's
AppDelegate 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)
3.1.1
[fixed] Ensure NSUserDefaults is persisted properly before app close. (#1646)
[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)
3.0.3
[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.
3.0.2
[added] Added a warning message when subscribing to topics with incorrect name formats.
[fixed] Silenced a deprecation warning in FIRMessaging.
3.0.1
[fixed] Clean up a few deprecation warnings.
3.0.0
[removed] Remove deprecated delegate property remoteMessageDelegate, please use delegate instead.
[removed] Remove deprecated method messaging:didRefreshRegistrationToken: defined in FIRMessagingDelegate protocol, please use messaging:didReceiveRegistrationToken: instead.
[removed] Remove deprecated method applicationReceivedRemoteMessage: defined in FIRMessagingDelegate protocol, please use messaging:didReceiveMessage: instead.
[fixed] Fix an issue that data messages were not tracked successfully.
2.2.0
[added] Add new methods that provide completion handlers for topic subscription and unsubscription.
2.1.1
[changed] Improve documentation on the usage of the autoInitEnabled property.
2.1.0
[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.
2.0.5
[added] Added swizzling of additional UNUserNotificationCenterDelegate method, for
more accurate Analytics logging.
[fixed] Fixed a swizzling issue with unimplemented UNUserNotificationCenterDelegate
methods.
2.0.4
[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.
2.0.3
[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.
2.0.2
[changed] Removed old logic which was saving the SDK version to NSUserDefaults.
2.0.1
[fixed] Fixed an issue where setting shouldEstablishDirectChannel in 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.
2.0.0
[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
1.2.3
[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
1.2.2
[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.
1.2.1
[changed] Better documentation on the public headers.
1.2.0
[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.
1.1.1
[changed] Move FIRMessaging related plists to ApplicationSupport directory.
1.1.0
[changed] Change flag to disable swizzling to FirebaseAppDelegateProxyEnabled.