W/FirebaseMessaging: Missing Default Notification Channel metadata in AndroidManifest. Default value will be used

48,521

Solution 1

I know this is late but I hope this helps you or at least someone else. It has been answered before here.

Basically, you have the meta-data name wrong.
Instead of

<meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/notification_channel_id" />

it should be

<meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

UPDATE: Added missing quote

Solution 2

Answer and tips for newer

The meta-data tag:

<meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/notification_channel_id" />

Is going inside the application tag on AndroidManifest.xml, example:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.domain.appname">

  <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@mipmap/ic_launcher" />

        <meta-data
            android:name="com.google.firebase.messaging.default_notification_channel_id"
            android:value="@string/default_notification_channel_id"/>     

And there is a file called "app/src/main/res/values/strings.xml" where you need to add this line inside resources tag :

<string name="default_notification_channel_id">com.domain.appname.urgent</string>

The value "com.domain.appname.urgent" need to be the same as your default created channel.

strings.xml look like:

<?xml version='1.0' encoding='utf-8'?>
<resources>
    <string name="app_name">MyApp</string>
    <string name="title_activity_main">MyApp</string>
    <string name="package_name">com.domain.appname</string>
    <string name="custom_url_scheme">com.domain.appname</string>
    <string name="default_notification_channel_id">com.domain.appname.urgent</string>
</resources>

Solution 3

I had the same problem as you. You had an incorrect meta name.

Instead of

android:name="com.google.firebase.messaging.default_notification_channel"

you should use

android:name="com.google.firebase.messaging.default_notification_channel_id"

the only different is the "_id"

Share:
48,521
jazzbpn
Author by

jazzbpn

With 6+ years of experience, I have developed many iOS/android applications in different context, professional and oldest passion for computer programming began very early in my life. I've learned the social environment is as important as logic aspects of the developing approach then I appreciate very much to get in touch with positive and eager colleagues that involve me in new and exciting challenges. This is why I still want to get involved in new opportunities to improve my skillness.

Updated on December 04, 2021

Comments

  • jazzbpn
    jazzbpn over 2 years

    Our app now has targetSdkVersion 26 (Android 8) and the app uses FCM push notifications. When app is in the foreground state the push notification is working well. The issue appears while clicking the notification when the app is not in the foreground state. I just added the metadata in manifest but still got same error.

    AndroidManifest.xml

    <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel"
        android:value="@string/default_notification_channel_id"/>
    

    MyFirebaseMessagingService.java

    /**
     * Create and show a simple notification containing the received FCM message.
     */
    private void sendNotification(NotificationModel notificationModel) 
    {
        Intent intent;
        if (notificationModel.getAppLink() != null) 
        {
            intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(notificationModel.getAppLink()));
        } else 
        {
            intent = new Intent(this, NoticeActivity.class);
        }
    
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                PendingIntent.FLAG_ONE_SHOT);
        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
    
        if (notificationModel.getAppLink() != null) 
        {
            notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
        } else 
        {
            notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
        }
    
        notificationBuilder.setContentTitle(notificationModel.getTitle())
                .setContentText(notificationModel.getMessage())
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);
    
        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
        {
            int importance = NotificationManager.IMPORTANCE_LOW;
            NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.enableVibration(true);
            notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
            assert notificationManager != null;
            notificationBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
            notificationManager.createNotificationChannel(notificationChannel);
        }
    
        assert notificationManager != null;
        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
    }
    
  • shinriyo
    shinriyo almost 4 years
    default_notification_channel_id is already set? or should set where?
  • K.Amanov
    K.Amanov about 3 years
    @shinriyo default_notification_channel_id set on res/values/strings.xml. So you can edit and set your channel_id
  • Nico Haase
    Nico Haase over 2 years
    Please add some explanation to your answer such that others can learn from it