Firebase: как установить канал уведомлений по умолчанию в приложении для Android?

Как установить канал уведомлений по умолчанию для уведомлений, которые приходят, когда приложение работает в фоновом режиме? По умолчанию эти сообщения используют канал «Разное».


person Maksim Ostrovidov    schedule 05.09.2017    source источник


Ответы (3)


Как вы можете видеть здесь, в официальных документах, вам необходимо добавьте следующий элемент метаданных в свой AndroidManifest.xml в компоненте приложения:

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

Этот канал по умолчанию будет использоваться, если в сообщении уведомления нет указанного канала или если указанный канал еще не был создан приложением.

person Maksim Ostrovidov    schedule 05.09.2017
comment
где этот default_notification_channel_id - person Mahesh Gawhane; 12.01.2018
comment
в файле strings.xml поместите <string name=“default_notification_channel_id”>Channel ID</string>, вы можете просмотреть этот пост для получения дополнительной информации: medium.com/exploring-android/ - person chornge; 13.03.2018
comment
Что произойдет, если мы не создадим даже канал уведомлений по умолчанию, как указано выше в манифесте приложения? - person user1261913; 07.05.2019
comment
@ user1261913 Не думаю, что нужно настраивать собственный канал уведомлений по умолчанию. В документации указано: FCM предоставляет канал уведомлений по умолчанию с базовыми настройками. Если вы предпочитаете создать и использовать свой собственный канал по умолчанию, установите default_notification_channel_id равным идентификатору вашего объекта канала уведомлений, как показано; - person M165437; 15.06.2019
comment
Конечно, строка ID канала, определенная в строках res, должна быть связана с ЧТО-ТО ЧТО-ТО? - person The Tahaan; 25.10.2019
comment
что, если у вас есть конкретный идентификатор канала? - person azheen; 30.05.2020
comment
При создании файла strings.xml убедитесь, что вы правильно отформатировали его с помощью тегов xml version и resources, иначе вы получите ошибки сборки. См. Здесь: developer.android.com/guide/topics/resources/string-resource - person J. Saw; 05.08.2020
comment
после <string name= обязательно используйте обычные кавычки " вместо изогнутых цитат _3 _ / _ 4_ - person happy_san; 28.08.2020
comment
Вы можете обратиться к этому сообщению о том, как создать канал уведомлений во Flutter. stackoverflow.com/a/67543703/11204120 - person luke; 15.05.2021
comment
где этот канал проверяется? как NotificationChannel.DEFAULT_CHANNEL_ID - person Pavel Poley; 16.06.2021

вам нужно добавить 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>
person Choo Chu    schedule 19.05.2020

Вам необходимо зарегистрировать канал, используя NotificationManager CreateNotificationChannel.

В этом примере используется C # в Xamarin, но он широко применим в других местах.

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);

}

Этот канал должен быть уникальным, например com.mycompany.myapp.urgent.

Затем вы добавляете ссылку на строку внутри тега application в 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>

Наконец, настройте строку в strings.xml

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <string name="default_notification_channel_id">com.mycompany.myapp.urgent</string>
</resources>
person James Westgate    schedule 11.03.2021