Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find out the Notification channel Id from RemoteMessage

I registered notification channel in Android app following GoogleSamples https://github.com/googlesamples/android-NotificationChannels

However how can I get notification channel Id from RemoteMessage, so I can set it to NotificationBuilder.

public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {

@Override
public void onMessageReceived(RemoteMessage remoteMessage) 
{
//int id = remoteMessage.getNotificationChannel(); // -something like this I could not find
}

I found this value in RemoteMessage object

enter image description here

value[3]="notification_channel_system", so I can set the value to firebase push notification using key value android_channel_id https://firebase.google.com/docs/cloud-messaging/http-server-ref but I cannot get it when it is received by device.

How does one get this id from PushNotification and set it to notification builder?

like image 325
Malbac Avatar asked Oct 24 '17 12:10

Malbac


People also ask

How do I get a notification channel ID?

To turn on the setting for a development device running Android 8.0 (API level 26), navigate to Settings > Developer options and enable Show notification channel warnings.

What is Channel ID in notification builder?

ChannelId is a unique String to identify each NotificationChannel and is used in Notification. Builder (line 7) when constructing the Notification object. NotificationChannel settings, except channel name and description text, are immutable after it is submitted to NotificationManager at line 5.

How do I find my firebase channel ID?

See getChannelId() : Gets the channel id from the notification. Note that this method does not perform verification on the existence of a channel, nor does it fallback to the manifest defined default or the default FCM channel. Returns channel id that was provided when the message was sent, null otherwise.

How do I find my channel ID Android?

Find your channel's user ID & channel ID You can see your channel's user and channel IDs in your advanced account settings on a computer or mobile browser. Sign in to YouTube. From the left menu, select Advanced settings. You'll see your channel's user and channel IDs.


1 Answers

See getChannelId():

Gets the channel id from the notification. Note that this method does not perform verification on the existence of a channel, nor does it fallback to the manifest defined default or the default FCM channel.

Returns channel id that was provided when the message was sent, null otherwise.


Did some digging with Android Notification Channels in relation with FCM and here's what I got:

There is currently no function to get the notification channel id (aka android_channel_id or from your post -- notification_channel_system). AFAICT, this is working as intended. Since the notification channel id included in the payload from FCM should be handled automatically by the client. From the docs (emphasis mine):

The notification's channel id (new in Android O).

The app must create a channel with this ID before any notification with this key is received.

If you don't send this key in the request, or if the channel id provided has not yet been created by your app, FCM uses the channel id specified in your app manifest.

Which means you have to create the notification channel ids that you intend to use first -- what I did was create the notification channels in the application instance, like so:

private void initNotificationChannels() {
    NotificationManager mNotificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    String channelIdOne = "com.my.fcm.test.app.test_channel_one";
    CharSequence nameOne = getString(R.string.channel_one_name);
    String descriptionOne = getString(R.string.channel_one_description);
    int importanceOne = NotificationManager.IMPORTANCE_HIGH;

    NotificationChannel channelOne = new NotificationChannel(channelIdOne, nameOne, importanceOne);
    channelOne.setDescription(descriptionOne);
    channelOne.enableLights(true);
    channelOne.setLightColor(Color.GREEN);
    channelOne.enableVibration(false);
    mNotificationManager.createNotificationChannel(channelOne);

    String channelIdTwo = "com.my.fcm.test.app.test_channel_two";
    CharSequence nameTwo = getString(R.string.channel_two_name);
    String descriptionTwo = getString(R.string.channel_two_description);
    int importanceTwo = NotificationManager.IMPORTANCE_DEFAULT;

    NotificationChannel channelTwo = new NotificationChannel(channelIdTwo, nameTwo, importanceTwo);
    // Configure the notification channel.
    channelTwo.setDescription(descriptionTwo);
    channelTwo.enableVibration(false);
    mNotificationManager.createNotificationChannel(channelTwo);
}

So that when the payload comes in, the client itself should handle it accordingly.

like image 165
AL. Avatar answered Sep 30 '22 01:09

AL.