Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как прочитать ВСЕ свои push из шторки, при старте программы


ENERGY

Вопрос

Как прочитать все свои сообщения Push, если пришло больше одного сообщения, при старте программы?

Дело в том, что код который на форуме популярен, показывает только одно сообщение, только то, которое выбрано.

Пример: отправляю 3 сообщения, все 3 висят в статус баре, при загрузке программы показывает только то, по которому тапнули из статус бара, остальные игнорит. А мне нужно их все 3 сохранить.

var
  vCurNotification : TPushServiceNotification;

begin
  for vCurNotification in fPushService.StartupNotifications do
  begin
    OnReceiveNotificationEvent(Self, vCurNotification)
  end;

end;

 

Push сервис получаю так, как указано в статье Равиля:

procedure TPushNotify.UpdateConnection;
begin
  fPushService := nil;
  fPushServiceConnection := nil;
  {$IF defined(ANDROID)}
  fPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM);
  fPushService.AppProps[TPushService.TAppPropNames.GCMAppID] := ServerSenderID;
{$ENDIF}
{$IF defined(IOS) AND defined(CPUARM)}
  fPushService := TPushServiceManager.Instance.GetServiceByName
   (TPushService.TServiceNames.APS);
{$ENDIF}
  if Assigned(fPushService) then
  begin
    fPushServiceConnection := TPushServiceConnection.Create(FPushService);
    fPushServiceConnection.OnChange := OnServiceConnectionChange;
    fPushServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;
    fPushServiceConnection.Active := true;
  end;
end;

 

ОК, выберем такое поведение - пусть юзер выбирает каждое сообщение, тапнув по нему в статус баре и читает его в программе. Я бы и так сделал, но тогда возникает проблема с очисткой в статус баре. Я так понял сообщения можно удалить только все (CancelAll) - т.е. юзер тапнул на одно сообщение, прочитал и затем программа очистила все остальные.. Вот в чем проблема. Странно почему нет нормального механизма..

 

Изменено пользователем ENERGY
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

ENERGY Для получения всех активных уведомлений в Android существует метод:

getActiveNotifications

added in API level 23
StatusBarNotification[] getActiveNotifications ()

FMX (Berlin и ниже точно, Tokyo не смотрел) не предоставляет доступ к этому методу, в исходниках (Androidapi.JNI.App.pas) он закомментирован. Возможно при использовании своего wrapper для класса JNotificationManager или отсюда можно получить доступ к требуемому функционалу.

Ссылка на комментарий
  • 0
2 часа назад, ENERGY сказал:

Я так понял сообщения можно удалить только все (CancelAll) - т.е. юзер тапнул на одно сообщение, прочитал и затем программа очистила все остальные.. Вот в чем проблема. Странно почему нет нормального механизма..

Для того, чтобы при нажатии на уведомление оно автоматически исчезало из StatusBar при его создании необходимо добавлять флаг:

localBuilder.setAutoCancel(true);

В библиотеке fmx.jar этот код отсутствует (package com.embarcadero.rtl.notifications, public class NotificationPublisher). У меня есть перекомпиленная библиотека для Seattle. Изменение библиотек выполняется таким же образом, как и создание своих всем известным методов через .bat файл.

Ссылка на комментарий
  • 0

Всем привет!

Из этой темы так и непонятно как прочитать свои сообщения, которые пришли когда приложение было "inactive or killed".

В целом задача - собирать у себя в приложении отправленные пуши все, которые дошли до устройства.

В IOS все работает очень красиво!.

А вот в Андроиде не могу  получить в приложение все сообщения, которые пришли по его токену.

У меня в Андроиде событие  OnReceiveNotificationEvent отрабатывает только когда приложение активно.

Сейчас сижу, разбираюсь. В голове каша. Дайте пожалуйста какой-нибудь намек куда смотреть?...

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...