Ионный / конденсатор - PushNotiifcations - Android - «уведомление» + «данные» сообщение

Я использую плагин PushNotifications Capacitor и FCM для отправки уведомлений, все работает нормально, пока я не захочу отправить Push-уведомление с полями notification и data на Android.

Я хочу отправить пользовательские данные с уведомлением и использовать уведомление при возобновлении работы приложения. Я использую метод PushNotifications.getDeliveredNotifications() для получения уведомлений о возобновлении, на iOS я получаю все уведомления с правильным data, но на Android свойство data заменяется объектом ниже:

{
  body: "My Body",
  data: {
    android.appInfo: "ApplicationInfo{809371c app}",
    android.bigText: "My Body",
    android.progress: 0,
    android.progressIndeterminate: false,
    android.progressMax: 0,
    android.reduced.images: true,
    android.showChronometer: false,
    android.showWhen: true,
    android.template: "android.app.Notification$BigTextStyle",
    android.text: "My Body",
    android.title: "My Title",
    gameDndOn: false,
    specialType: "",
    topFullscreen: false,
    groupSummary: false,
    id: 0,
    title: "My Title"
  }
}

В документации FCM для приложений Android я вижу, что если присутствуют и поля уведомления, и поля данных, а приложение находится в фоновом режиме, уведомление попадает на панель задач, а данные - в дополнительные сведения о намерениях.

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

Есть ли способ получить эти данные в таком случае?


person Mateusz Rybczonek    schedule 02.10.2020    source источник


Ответы (1)


Вы должны создать сообщение в этом формате

{
"message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}

Примечание: notification структура важна для получения уведомления. Вам необходимо иметь title и body. Это отображается в панели уведомлений.

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

Предложение, держите свою полезную нагрузку небольшой. Отправляйте данные, которые абсолютно необходимы, а также безопасно отправлять через FCM.

Посмотрите на эту часть официального документация

Для обработки push-уведомлений в конденсаторе следует использовать слушателей. Вот способ сделать это в официальной документации.

person Chetan Bansal    schedule 02.10.2020
comment
Проблема не в этом, я использую именно тот формат, который вы указали. Я также обрабатываю уведомления, используя правильные слушатели. Я получаю уведомление правильно. У меня есть доступ к data, когда приложение находится на переднем плане и когда я нажимаю на уведомление. У меня нет доступа к свойству data, когда я получаю уведомление в фоновом режиме, а затем возобновляю работу приложения (но не нажатием на уведомление). Есть ли способ получать уведомления data в этом случае? - person Mateusz Rybczonek; 02.10.2020
comment
Я считаю, что это как-то связано с тем, как сообщения обрабатываются на Android Сообщения с уведомлением и полезными данными, полученные в фоновом режиме. В этом случае уведомление доставляется на панель задач устройства, а полезные данные доставляются в дополнениях к цели вашей активности запуска. - person Mateusz Rybczonek; 02.10.2020