У нас есть два типа полезной нагрузки, в случае отправки-нисходящего потока оба являются необязательными.
data
Этот параметр указывает пользовательские пары ключ-значение полезной нагрузки сообщения.
уведомление
Этот параметр указывает предопределенные видимые пользователем пары ключ-значение полезной нагрузки уведомления.
[ https://firebase.google.com/docs/cloud-messaging/http-server-ref#send-downstream] [Найти Подробнее здесь]
Когда вы в фоновом режиме, FCM будет отображать уведомление в системном трее на основе информации из полезной нагрузки уведомления. Заголовок, сообщение и значок, используемые для уведомления на панели задач, извлекаются из полезных данных уведомления.
{
"notification": {
"title" : "title",
"body" : "body text",
"icon" : "ic_notification",
"click_action" : "OPEN_ACTIVITY_1"
}
}
Вам нужно использовать полезную нагрузку data вместо полезной нагрузки уведомления, ваша проблема будет решена.
Вот пример JSON, который я получаю:
{
"to": "FCM registration ID",
"data": {
"someData" : "This is some data",
"someData2" : "etc"
}
}
Вот мой код Java.
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage == null)
return;
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
try {
JSONObject json = new
JSONObject(remoteMessage.getData().toString());
handleDataMessage(json);
} catch (Exception e) {
Log.e(TAG, "Exception: " + e.getMessage());
}
}
}
Сообщения с уведомлением и полезной нагрузкой данных:
Сообщение также может содержать как уведомления, так и полезную нагрузку данных. Когда такие сообщения отправляются, они обрабатываются в двух сценариях, в зависимости от состояния приложения (фон / передний план). Для этих сообщений мы можем использовать как уведомления, так и ключи данных.
В фоновом режиме - приложения получают полезную нагрузку уведомления в области уведомлений и обрабатывают полезную нагрузку данных только тогда, когда пользователь нажимает на уведомление.
Когда на переднем плане - приложение получает объект сообщения с обоими полезными нагрузками.
Механизмы правил могут выполнять переадресацию и обратная цепочка, а также вывод. Проверьте Fair Isaac Blaze, Drools или iLog для реализации.
Механизмы бизнес-правил, как правило, используются для предоставления настраиваемой логики «ЕСЛИ-ТО-ТО-ТО-ДЕЛАЕТ» для приложений. Эти типы бизнес-правил могут запускать определенные рабочие процессы или передавать знания о событиях правилам более высокого уровня, вызывая их оценку.
Использование механизма правил также позволяет легче разделять задачи, удаляя бизнес-логику из вашего кода. Механизмы правил сегодня обычно также предлагают интерфейс, где пользователи могут добавлять новые правила без необходимости изменять скрипты внутри приложения.
Механизмы правил реализуют такие алгоритмы, как Rete (если судить по опыту Drools), которые ускоряют задачу оценки правил. , Механизм правил также обеспечивает прямую цепочку, обратную цепочку, гибридную цепочку и т. Д. Правил. Тем не мение, они также могут быть реализованы на языке сценариев. С обоими подходами вы можете достичь одних и тех же вещей, но я считаю, что это зависит от сложности и количества правил относительно того, какой путь вы должны выбрать.
Посмотрите на эту ссылку из проекта Jess: http://www.jessrules.com/guidelines.shtml
Он предоставляет пошаговый пошаговый набор вопросов, чтобы задать себе вопрос, чтобы определить, соответствует ли механизм правил вашим потребностям или является избыточным.
Механизм бизнес-правил или систему управления бизнес-правилами следует использовать, когда вы пытаетесь реализовать решение в своем коде. Но не просто какое-то решение. Решение, которое:
Это те виды решений, которые приносят прибыль от использования системы управления бизнес-правилами. Не начинайте с правил, начните с РЕШЕНИЙ.
Бизнес-правила многословны (поэтому деловым людям их легче читать),