- [changed] Bug fix in SyncTask to always unregister the receiver on the same context on which it was registered.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [deprecated] Deprecated additional FCM upstream messaging methods and updated all upstream methods to indicate they are now decommissioned. See the FAQ for more details.
- [changed] Changed WithinAppServiceConnection's ScheduledThreadPoolExecutor's configuration to allow the thread to stop polling after the timeout task has been canceled.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Updated protobuf dependency to
3.25.5
to fix CVE-2024-7254.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Included message priority when logging to Firelog.
- [changed] Retry Topic Subscribe/Unsubscribe operations with exponential backoff if they hit a quota error.
- [changed] Checked for notification_open duplicate logging based on message ID instead of the Activity's Intent.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Switched Firelog to use the new TransportBackend.
- [changed] Log analytics for notifications displayed by Google Play services on behalf of the app.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Bump internal dependencies.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Called messageHandled() after a message has been handled to indicate that the message has been handled successfully.
- [changed] Added an internal identifier to Firelog logging for compliance.
- [changed] Added metadata to FirebaseInstanceIdReceiver to signal that it finishes background broadcasts after the message has been handled.
- [changed] Specified notification's dismiss intent target via action instead of component name.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Added Kotlin extensions (KTX) APIs from
com.google.firebase:firebase-messaging-ktx
tocom.google.firebase:firebase-messaging
under thecom.google.firebase.messaging
package. For details, see the FAQ about this initiative - [deprecated] All the APIs from
com.google.firebase:firebase-messaging-ktx
have been added tocom.google.firebase:firebase-messaging
under thecom.google.firebase.messaging
package, and all the Kotlin extensions (KTX) APIs incom.google.firebase:firebase-messaging-ktx
are now deprecated. As early as April 2024, we'll no longer release KTX modules. For details, see the FAQ about this initiative
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Changed to finish a background broadcast after the message has been
handled, subject to a timeout. This keeps the
FirebaseMessagingService
's process in an active state while it is handling an FCM message, up to the 20 seconds allowed.
- [deprecated] Deprecated FCM upstream messaging. See the FAQ for more details.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [fixed] Fixed a breakage related to Jetpack core library related to an upstream update.
- [changed] Updated JavaLite, protoc, protobuf-java-util to 3.21.11.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [fixed] Fixed deadlock when handling simultaneous messages.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [unchanged] Updated to accommodate the release of the updated [messaging_longer] Kotlin extensions library.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has the following
additional updates:
- [feature] Firebase now supports Kotlin coroutines.
With this release, we added
kotlinx-coroutines-play-services
{: .external} tofirebase-messaging-ktx
as a transitive dependency, which exposes theTask<T>.await()
suspend function to convert aTask
into a Kotlin coroutine.
- [changed] Updated dependency of
play-services-basement
to its latest version (v18.1.0).
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Message broadcasts now finish immediately after binding to the service. This change should reduce the chance of ANRs.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Added the
POST_NOTIFICATIONS
permission to enable posting notifications when targeting SDK level 33. See [messaging] guidance on how to request runtime notification permission on Android 13+ - [fixed] Added an annotation to an internal class to fix a missing class warning.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [fixed] Fixed a dependency on the
firebase-datatransport
layer. (GitHub #3716{: .external}) - [fixed] Upgraded logging priority for message delivery events to avoid dropped logs.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [fixed] Removed test resources from library.
- [fixed] Changed to catch
RuntimeException
when getting theBundle
from anActivity Intent
while checking for notification analytics data. - [changed] Internal changes to notification building methods.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [fixed] Fixed an issue where the messaging component in
the [firebase_bom_long] leaked the
httpcomponents
transitive dependencies.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Updated to the latest version of the
firebase-datatransport
library. - [changed] Updated dependencies of
play-services-basement
,play-services-base
, andplay-services-tasks
to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the note at the top of this release entry. - [fixed] On Android 7.0 and earlier, the SDK now logs that a notification was
opened after
onActivityCreated
to avoid a race condition when unparceling the extras Bundle. - [fixed] Switched to stopping an image download by canceling a
Future
to interrupt the download thread. This change avoids errors that can occur in the image downloading library when trying to close the stream on a different thread than the one that started the download. - [fixed] Fixed reference documentation for
RemoteMessage.getMessageId()
and updated obsolete references to Google Cloud Messaging (GCM).
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Due to its dependency on Google Play services, this SDK now requires devices and emulators to target API level 19 (KitKat) or higher and to use Android 4.4 or higher.
- [feature] Added methods for determining and controlling whether Google Play services is set as the app’s notification delegate. By default, FCM will now set Google Play services as the app’s notification delegate so that it is allowed to display notifications for the app. This could be used in the future to show an app’s notifications without needing to start the app, which may improve message reliability and timeliness.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Removed dependency on the deprecated Firebase Instance ID SDK.
Caution: This is a breaking change for apps that use [messaging] and the
deprecated Firebase Instance ID API to manage registration tokens.
We strongly recommend migrating to [messaging]'s token APIs. If you're unable to migrate to the replacement APIs, add a direct dependency on thefirebase-iid
library to yourbuild.gradle
file. - [feature] Changed to open an
Activity
directly when a notification is tapped instead of passing it throughFirebaseMessagingService
. This change is to comply with Android 12 notification trampoline restrictions. - [feature] Internal changes to use proto instead of JSON for logging.
- [changed] Internal changes to support dynamic feature modules.
- [changed] Internal infrastructure improvements.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [feature] Migrated internal handling of new token callbacks and notification actions from Firebase Instance ID to [firebase_messaging].
- [feature] Added functionality to generate [messaging] tokens from
FirebaseMessaging.getToken
, while continuing to call through to Firebase Instance ID if it is present. This will allow [firebase_messaging] to remove its dependency on Firebase Instance ID in the future.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [changed] Updated to latest version of the
firebase-datatransport
library. - [feature] The SDK now gracefully handles missing default resources.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [feature] Migrated auto-initialization from Firebase Instance ID to [firebase_messaging].
- [feature] Added a check for incompatible versions of Firebase Instance ID. An exception is thrown during instantiation if one is found.
- [fixed] Fixed an issue where events were erronously logged to [firebase_analytics] twice.
The Kotlin extensions library transitively includes the updated
firebase-messaging
library. The Kotlin extensions library has no additional
updates.
- [feature] Added
getToken
anddeleteToken
methods directly toFirebaseMessaging
. - [changed] Internal changes to the Google Play services interface to improve future development velocity.
- [feature] The [messaging_longer] Android library with Kotlin
extensions is now available. The Kotlin extensions library transitively
includes the base
firebase-messaging
library. To learn more, visit the [messaging_longer] KTX documentation.
- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more information, refer to the Firebase Installations v16.3.3 release notes.
- [fixed] Fixed an issue that caused an app to crash when a user tapped on a received notification.
Warning: This version of firebase-messaging
(v20.2.2) should not be used.
It has a known issue that causes an app to crash when a user taps on a
received notification. A fix for this issue was released on July 08, 2020
(see v20.2.3).
- [changed] Internal improvements.
- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more information, refer to the Firebase Instance ID v20.2.1 release notes.
- [changed] Internal changes to ensure functionality alignment with other SDK releases (for more information, refer to the [messaging_longer] Direct Boot v20.2.0 release notes).
- [changed] Internal changes to ensure functionality alignment with other SDK releases (for more information, refer to the Firebase Instance ID v20.1.7 release notes).
- [fixed] Fixed a bug in topic syncing that was causing increased usage of shared system resources when waiting for a working network connection.
Warning: In some cases, firebase-messaging
v20.1.4 and v20.1.5 are erroneously
consuming system resources which can negatively impact the performance of a
user's device. To avoid this effect, update your app's version of
firebase-messaging
to
v20.1.6 or later.
- [changed] Internal changes to ensure functionality alignment with other SDK releases.
Warning: In some cases, firebase-messaging
v20.1.4 and v20.1.5 are erroneously
consuming system resources which can negatively impact the performance of a
user's device. To avoid this effect, update your app's version of
firebase-messaging
to
v20.1.6 or later.
- [changed] Internal changes to ensure functionality alignment with other SDK releases.
- [changed] Internal changes to ensure functionality alignment with other SDK releases.
As of v20.1.1, the [messaging_longer] SDK depends on the [installations_sdk]. Learn about possible impacts in the v20.1.1 release notes.
- [changed] Internal changes to ensure functionality alignment with other SDK releases (for more information, refer to the bug fix in the Firebase Instance ID v20.1.1 release notes).
Warning: This version of firebase-messaging
(v20.1.1) has known issues
involving silent failures and should not be used. A fix for these issues was
released on March 03, 2020.
-
[changed] Changed the default for notification titles. Previously, an empty title was replaced with the app's label, but now an empty title causes the notification title to be omitted.
-
[fixed] Fixed an issue that could cause ANRs when receiving messages.
-
[changed] [messaging_longer] now transitively depends on the [installations_sdk]. After updating to the latest dependency versions, make sure that push notifications still work as expected. Also, be aware of the following:
-
The [messaging] registration tokens of installed instances of your apps might change once after updating dependencies to their latest versions. To learn if your apps are affected, review the [firebase_installations] documentation. Also, make sure to monitor [messaging] registration token generation using the
#onNewToken
implementation. -
Apps that use the Firebase auto-initialization process and the Gradle plugin to convert
google-services.json
into resources are unaffected. However, apps that create their ownFirebaseOptions
instances must provide a valid API key, Firebase project ID, and application ID.
-
- [feature] Added
setDeliveryMetricsExportToBigQuery(boolean)
anddeliveryMetricsExportToBigQueryEnabled()
to control and query if messsage delivery metrics are exported to BigQuery. - [changed] Changed to catch and log NullPointerException when trying to close the image download stream. This NPE can happen if the image download takes too long and times out.
- [fixed] Fixed notifications on API level 24 and later to display the event
time when
event_time
is set.
- [feature] Added support for more Android notification parameters, including:
ticker
,sticky
,event_time
,local_only
,notification_priority
,default_sound
,default_vibrate_timings
,default_light_settings
,visibility
,notification_count
,vibrate_timings
andlight_settings
. - [feature] Added support for Android notifications that include an image.
- [changed] Added nullability annotations to improve the Kotlin developer experience.
- [fixed] Fixed an issue where
FirebaseMessagingService.onNewToken
would be invoked for tokens created for non-default FirebaseApp instances. - [fixed] SDK now only retries topic subscriptions and token registration on the following errors: "ERROR_SERVICE_NOT_AVAILABLE" and "ERROR_INTERNAL_SERVER_ERROR".
- [changed] Updated minSdkVersion to API level 16.
- [feature] Added functionality to automatically download and show an image in
a notification message. Retrieve the image URL set in the message with the
getImageUrl
method inRemoteMessage.Notification
.
- [changed] Added internal improvements and refactored code.
- [feature] Added
getChannelId
method toRemoteMessage.Notification
for getting the channel ID set in a notification message. - [fixed] Fixed a rare
ClassCastException
while receiving a message.
- [fixed] Bug fixes and internal improvements.
- [fixed] Fixed an issue that would occasionally cause apps to crash with Android Not Responding (ANR) errors when receiving a message.
- [changed] Incremented the version number to 17.3.0 due to internal SDK changes. These changes do not affect client functionality, and developers do not need to take any action.
- [feature] Added
onNewToken
method toFirebaseMessagingService
which is invoked when the app gets a new Instance ID token or its existing token changes.
- [feature] Added
getPriority()
andgetOriginalPriority()
methods toRemoteMessage
. - [changed] The methods
subscribeToTopic()
andunsubscribeFromTopic()
onFirebaseMessaging
now return aTask
that can be used to see when the request has completed.