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

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

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

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

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

2 ответов

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

а как технически сделать так, чтобы 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() Надеюсь, кому-нибудь поможет сэкономить пару-тройку (или больше, как это было в моем случае) часов.

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

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

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
доброго времени. db, dw и прочие исполняются при трансляции или при выполнении программы?
lutayyy
10
Почему никто не подсказал, что можно объявить свои типы данных, в которых меньше полей, чем в отданном джейсоне, и добавлять их по необходимости?
Strange Rabbit
10
Хтось використовував Vapor на Windows?
Jaroshevskii
12
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Карта сайта