169 похожих чатов

Приветствую, друзья! Вопрос по пушам. Появилась необходимость не показывать некоторые уведомления

на экране при работе с приложением iOS.

В частности:
Есть чат с одним собеседником. При получении сообщения требуется, если пользователь находится на экране чата, пуш не должен отображаться. Но во всех других случаях, пуш нужен.

Как такое возможно сделать для iOS?

2 ответов

27 просмотров
Павел-Бабинцев Автор вопроса

а как технически сделать так, чтобы iOS не показывал уведомление? он зараза такой всегда их показывает... перейти на local notifications? другого варианта нет?

Павел-Бабинцев Автор вопроса
Павел Бабинцев
а как технически сделать так, чтобы iOS не показыв...

В общем, разобрался. Спасибо за наводку @olegys93 Сценарий 1. Приложение закрыто (или свёрнуто), приходит пуш (типа notification). Иос сам отображает такой пуш. В мобилке остается только прописать логику клика на него. Сценарий 2. Приложение открыто. Так как в некоторых случаях пуш отображать не надо, а в некоторых надо, то отключим стандартное отображение пуша на открытом приложении с помощью инициализации: FirebaseMessaging.instance.setForegroundNotificationPresentationOptions( alert: false, badge: false, sound: false, ); В таком случае будет приходить и его можно будет обработать в коде, но ИОС сам его не отобразит. Чтобы отобразить пуш, используем local notifications внутри подписки onMessage: FirebaseMessaging.onMessage.listen((RemoteMessage message) async { print('onMessage: ' + message.messageId); showLocalNotification(message); }); Если же в каких-то случаях (или на каких-то экранах, как в моем случае) отображать пуш не требуется, то перед показом локального уведомления просто ставим нужное условие, например: void showLocalNotification(RemoteMessage message) async { if (await needShowNotification(message.from, message.data)) { await flutterLocalNotificationsPlugin.show(0, messageNotification.title, messageNotification.body, platformChannelSpecifics, payload: jsonEncode(message.data)); } } где static final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin() Надеюсь, кому-нибудь поможет сэкономить пару-тройку (или больше, как это было в моем случае) часов.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта