Страницы

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

Показаны сообщения с ярлыком push-уведомления. Показать все сообщения
Показаны сообщения с ярлыком push-уведомления. Показать все сообщения

пятница, 24 января 2020 г.

Как обработать push android

#android #notifications #firebase #push_уведомления


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


Ответы

Ответ 1



Отправляйте data-сообщения (без объекта Notification) With FCM, you can send two types of messages to clients: Notification messages, sometimes thought of as "display messages." Data messages, which are handled by the client app. Client app is responsible for processing data messages. Data messages have only custom key-value pairs. Use notification messages when you want FCM to handle displaying a notification on your client app's behalf. Use data messages when you want to process the messages on your client app. About FCM Messages

Ответ 2



убрать метод super.onMessageReceived(remoteMessage);

Ответ 3



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

вторник, 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

четверг, 13 июня 2019 г.

Push-уведомления

У меня возник вопрос, вот есть приложения которые присылают уведомления типа "Вы не заходили в приложение уже 2 дня" и тому подобное. Эти приложения так же шлют нотификации через собственные сервера?
Нет возможности создавать локальные нотификации с таймером, что бы допустим через час после того как приложение закрылось, было показано уведомление?
Если нет, то получаеться мониторинг бездействия пользователя определяется так же по последнему конекту к серверу?


Ответ

Можете по последнему коннекту отсылать пуши, а можете запускать локальные нотификации. Например если пользователь свернул приложение, запускаем нотификацию,
func applicationDidEnterBackground(_ application: UIApplication) { let content = UNMutableNotificationContent() content.title = "Notification" content.body = "Sample" let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5.0, repeats: false) //покажет через 5 секунд let request = UNNotificationRequest(identifier:requestIdentifier, content: content, trigger: trigger) UNUserNotificationCenter.current().add(request){(error) in if (error != nil){ print(error?.localizedDescription ?? "") } } }
если пользователь открыл приложение - убиваем ее.
func applicationDidBecomeActive(_ application: UIApplication) { UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [requestIdentifier]) }
Если не запускал определенное время - показывается.
Пример на GitHub

понедельник, 18 марта 2019 г.

Как обработать push android

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


Ответ

Отправляйте data-сообщения (без объекта Notification)
With FCM, you can send two types of messages to clients: Notification messages, sometimes thought of as "display messages." Data messages, which are handled by the client app. Client app is responsible for processing data messages. Data messages have only custom key-value pairs. Use notification messages when you want FCM to handle displaying a notification on your client app's behalf. Use data messages when you want to process the messages on your client app.
About FCM Messages