2016-07-13 2 views
0

Я использую Firebase Cloud Messaging для отправки уведомлений с полезной нагрузкой на данные в свое приложение.Получите полезную нагрузку на информацию о android-уведомлении при увольнении

Когда я отправляю уведомление, если мое приложение работает (передним планом), я получаю данные, переопределяющие onMessageReceived() от FirebaseMessagingService.

Если мое приложение не работает, уведомление отправляется на «системный лоток», и когда пользователь нажимает на уведомление, запускается мое приложение, и я могу получить данные с getExtras намерения.

Но как я могу получить данные, если пользователь отклонил уведомление в «системном трее»?

Мне нужно написать фоновое обслуживание, которое «прослушивает» уведомления, чтобы получить это?

+1

Я думаю, вам нужно будет управлять идеей, чтобы сделать это, вместо того чтобы позволить firebase генерировать уведомление –

ответ

0

Итак, в основном вы хотите сохранить эти данные?

Если вы хотите сохранить эти данные, тогда напишите свой код в методе OnReceive() и напишите в нем код вставки базы данных.

и положите в него один флаг, как «Dismissed = true» , и если пользователь откроет ваше уведомление, сделайте его ложным, и вы получите свой результат.

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

+0

Я использую onMessageReceived() для хранения данных. Проблема в том, что onMessageReceived() вызывается только при запуске моего приложения. Если мое приложение не работает, уведомление отправляется на «лоток уведомлений», и таким образом я получаю данные только с помощью намерения.getExtras(), если пользователь «открывает» уведомление. Если он отклоняет уведомление, данные теряются, и я не могу его получить. – Eduvm

1

Похоже, вы отправляете уведомления с консоли Firebase. Эти сообщения всегда notification messages. Если notification message имеет сопроводительную полезную нагрузку данных, то эти данные доступны только вашему приложению, если пользователь удаляет уведомление. Если пользователь никогда не отбрасывает уведомление, данные не будут доступны для вашего приложения. Поэтому вы не должны использовать notification messages для отправки критически важных данных приложения в ваше приложение.

Если вы отправляете data messages, они всегда обрабатываются обратным вызовом onMessageReceived. В этот момент вы можете либо тихо обрабатывать сообщение, либо отображать собственное уведомление. Поэтому используйте data messages, если вы хотите быть уверены, что ваше приложение имеет возможность обрабатывать данные в сообщении.

+0

Я не использую консоль Firebase. Я написал код PHP, чтобы отправить уведомление и сообщение данных вместе следующим образом: 'to' => "/ topic/test", 'уведомление' => "test", 'data' => "test" Но я вижу в документации Firebase, что мы можем отправлять только уведомление, только данные или и то, и другое. Я попробую отправить только данные, чтобы проверить, работает ли он – Eduvm

+0

FYI, это должно быть/themes/test, а также информация и данные полезной нагрузки имеют определенный формат, который они не могут просто быть строками. –

+0

Привет @ Артур. Я помещаю это как пример того, как я отправляю сообщение. Фактически я создаю JSON, а затем отправляю POST на сервер Firebase. – Eduvm

Смежные вопросы