Firebase Pu sh Уведомление ChannelID от серверной части - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь найти правильный способ добавить 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.

...