Our app now has targetSdkVersion 26
(Android 8) and the app uses FCM push notifications.
As FCM documentation prescribes I updated the FCM client library to version 11.2.0:
dependencies {
compile 'com.google.firebase:firebase-messaging:11.2.0'
}
With this FCM client library update the FCM notifications started to appear on Android devices. Good, but when app is in background it's system who processes the FCM message, so it uses the default Android notification channel named "Miscellaneous", which is not what we want (we have other notification channels and "Miscellaneous" sounds confusing in that list).
As FCM documentation says there is a way to specify default notification channel for FCM messages:
(Optional) Within the application component, metadata elements to set a default icon, color and notification channel (new in Android O) for notifications. Android uses these values whenever incoming messages do not explicitly set icon, color or notification_channel.
However there is no code sample shown (samples are shown only for icon and color). So I just found by googling a sample in Firebase Cloud Messaging Quickstart on github:
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel"
android:value="@string/default_notification_channel_id"/>
But it does not work - FCM notifications still appear within the "Miscellaneous" channel. And I see in the logs:
W/FirebaseMessaging: Missing Default Notification Channel metadata in AndroidManifest. Default value will be used.
Of course, I tried to reinstall the app. Still having the issue.
Well, ideally there should be some way to specify notification channel(s) on back-end at the moment of sending the messages. The FCM dev console, which allows to test sending, now has such an option in UI:
And it works fine. However our back-end uses Java Amazon SNS API and I have no idea if that API allows to specify Android notification channel when sending a message (because it'a new Android feature, and Amazon needs time to adopt it). So setting a default notification channel in AndroidManifest.xml
would be a valid workaround for now, but it does not work.
default_notification_channel_id
? – Paleobiology