Андроид изыучаю не так давно, сейчас появилась необходимость сделать 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
Комментариев нет:
Отправить комментарий