How to set default notification channel for notification messages that come when an app is in the background? By default, these messages use "Miscellaneous" channel.
As you can see here in the official docs, you need to add the following metadata element in your AndroidManifest.xml
within the application component:
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id"/>
This default channel will be used when notification message has no specified channel, or if the channel provided has not yet been created by the app.
<string name=“default_notification_channel_id”>Channel ID</string>
, you can take a look at this post for more information: medium.com/exploring-android/… –
Barbabas strings.xml
file, be sure you format it correctly with the xml version
and resources
tag or you'll get build errors. See here: developer.android.com/guide/topics/resources/string-resource –
Hen <string name=
make sure to use normal quotes "
instead of curved quotation “
/”
–
Dermott You need to have registered a channel using NotificationManager
CreateNotificationChannel
.
This example uses c# in Xamarin, but is broadly applicable elsewhere
private void ConfigureNotificationChannel()
{
if (Build.VERSION.SdkInt < BuildVersionCodes.O)
{
// Notification channels are new in API 26 (and not a part of the
// support library). There is no need to create a notification
// channel on older versions of Android.
return;
}
var channelId = Resources.GetString(Resource.String.default_notification_channel_id);
var channelName = "Urgent";
var importance = NotificationImportance.High;
//This is the default channel and also appears in the manifest
var chan = new NotificationChannel(channelId, channelName, importance);
chan.EnableVibration(true);
chan.LockscreenVisibility = NotificationVisibility.Public;
var notificationManager = (NotificationManager)GetSystemService(NotificationService);
notificationManager.CreateNotificationChannel(chan);
}
This channel should be unique eg com.mycompany.myapp.urgent
You then add a reference to a string inside the application tag in the AndroidManifest.xml
<application android:label="MyApp" android:icon="@mipmap/icon">
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
</application>
Finally, setup the string in strings.xml
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<string name="default_notification_channel_id">com.mycompany.myapp.urgent</string>
</resources>
you need to add Cordova config.xml
<widget
...
xmlns:android="http://schemas.android.com/apk/res/android"
...>
<platform name="android">
<config-file target="AndroidManifest.xml" parent="application" mode="merge">
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id"/>
</config-file>
<config-file target="res/values/strings.xml" parent="/*">
<string name="default_notification_channel_id">urgent_alert</string>
</config-file>
</platform>
as my cases i already added
- metadata on AndroidManifest.xml
- Android Notification Channel on MainActivity.kt
<string name="default_notification_channel_id" translatable="false">fcm_default_channel</string>
on values/string.xml
then i figured out that my running devices at that time is on Night/Dark mode, so i need to copy values/string.xml
to values-night/string.xml
(create one if doesn't exist) then the local notifications will appear
so between the light and dark mode we need to adjust independently for the values
© 2022 - 2024 — McMap. All rights reserved.