Я пытаюсь найти правильный способ добавить channelID (https://developer.android.com/reference/android/app/NotificationChannel.html) к уведомлению Firebase, которое отправляется в мобильное приложение из внутреннего кода. ChannelID был установлен в приложении командой Android, включая идентификатор канала по умолчанию.
Команда Android не может перехватить уведомление и манипулировать им, так как идентификатор канала обрабатывается ОС. (когда идентификатор канала отсутствует, он переходит к значению по умолчанию).
Вот код, который я использую:
var notification = new com.google.firebase.messaging.Notification(title, body);
Map<String, String> dataMap = new HashMap<>();
dataMap.put("link", link);
//channelID is based on parameter.
//Different notifications being sent out from the backend have different channel_ID
dataMap.put("android_channel_id", channelID);
var message = Message.builder()
.setNotification(notification)
.putAllData(dataMap)
.setToken(token)
.build();
var response = send(message);
response.setToken(token);
return response;
Я использую com.google.firebase.messaging
для создания сообщения для отправки. Это возвращает ответ, подобный этому:
{
"aps": {
"alert": {
"title": "Message Title",
"body": "So-and-So has notified you"
}
},
"link": "www.templink.com",
"android_channel_id":"some_channel based on parameter"
}
Этот формат не работает, хотя. Я думаю о добавлении android_channel_id в поле alert
из встроенного сообщения. Но так как это делается с помощью компоновщика, мне не ясно, как я могу добавить идентификатор канала внутри самого уведомления. (Используемое мной встроенное уведомление firebase принимает только два параметра: title, body)
Первый вопрос: добавление channelID внутри самого уведомления - правильный способ дать знать Android os идентификатор канала входящего уведомления? если да, то как я могу сделать это с помощью уведомления Firebase, которое принимает только заголовок и тело?
Второй вопрос: если вышеприведенное не лучший способ сделать это, каков наилучший способ включить идентификатор канала для отправляемого уведомления, чтобы ОС Android могла распознать идентификатор канала?
Пока что большая часть документации написана с точки зрения Android. (https://firebase.google.com/docs/cloud-messaging/android/client). Эта статья: https://medium.com/exploring-android/exploring-android-o-notification-channels-94cd274f604c очень помогла мне. Но тем не менее, он не использует уведомление Firebase.