Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

Как поставить свою иконку на push уведомления firebase, когда приложение в фоне или закрыто?

Андроид изыучаю не так давно, сейчас появилась необходимость сделать push уведомления. Поставил firebase, прописал метод onMessageReceived, но, насколько понял, в фоне он не работает. Как сделать так, чтобы когда приложение в бэкграунде, отображало push с кастомной иконкой?


Ответ

Да, в метод onMessageReceived приходят сообщения только когда приложение активно. Когда приложение в фоне - сообщения сразу попадает в нотификации. Вы можете установить свойство click_action на это сообщение а у себя в приложении ловить его через intent-filter.
Пример
тело сообщения которое отправляет сервер:
var message = new gcm.Message({ collapseKey: 'data', priority: 'high', contentAvailable: true, delayWhileIdle: false, timeToLive: 10000,
data: { message: 'Message from gcm server', action: 'some action' },
notification: { tag : 'hasData', title: "English for Founders", icon: "ic_launcher", color: "#22C064", sound: "notification_sound", body: "This is a GCM notification that will be displayed ASAP.", click_action: "OPEN_APP" // make intent-filter in Manifest.xml for this action } });
У вас в Manifest.xml прописан фильтр на action - OPEN_APP на определенное активити.
В итоге телефон получит push-уведомление из которого вы сможете получить click_action и когда Activity запуститься, в методе onCreate вы с можете получить еще и data с этого сообщения, вот так:
public static void parseExtras (Bundle intentExtras){ if (intentExtras != null) { for (String key : intentExtras.keySet()) { try { String value = intentExtras.getString(key); Log.wtf(TAG, "Key: " + key + " Value: " + value); }catch (ClassCastException e){ Log.wtf(TAG, "Cannot parse extras, ClassCastException");} } } }
А картинку если вам надо отображать, пропишите ее название в теге icon

Комментариев нет:

Отправить комментарий