• 0
ra.eremeev

Запуск приложения от PUSH-уведомления

Вопросы

Добрый день, Друзья!

 

Помогите, пожалуйста, разобраться - в голове уже каша :wacko:

Как в Delphi можно реализовать обработку поступающих на устройство PUSH-уведомлений при выгруженном или свернутом приложении?

При запущеном и активном приложении проблем нет - использую OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification) в связке с TNotificationCenter.

Эта процедура у меня:

1. очищает все активные уведомления; 

2. создает в TNotificationCenter последнее пришедшее, которое и отображается пользователю.

Его обработчик мной реализован.

 

"Проблемы" есть если приложение выгружено или свернуто...

Есть 2 очень похожих сценария:

Сценарий №1: Приложение выгружено из памяти. Приходит PUSH. Пользователь нажимает на него. Приложение запускается. OnReceiveNotificationEvent после запуска не отрабатывает. Как обработать событие - не знаю :(

Сценарий №2: Приложение запущено, но свернуто. Приходит PUSH. Пользователь нажимает на него. Приложение становится активным. После этого отрабатывает OnReceiveNotificationEvent: очищаются уведомления и создается новое. Пользователю надо повторно на него нажать и тогда сработает обработчик.

Вопрос: Как получить текст (или любое другое поле - не важно) ЭТОГО push-уведомления после запуска/вывода приложения из фона?

Допущение: Если ЭТО уведомление (запустившее приложение) идентифицировать нельзя, то как можно понять, что запуск произведен именно по нажатию на push?

 

Задача актуальна не только для Android, но и iOS.

Буду ОЧЕНЬ БЛАГОДАРЕН за помощь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 ответов на этот вопрос

  • 1
В 23.04.2017 в 18:15, ra.eremeev сказал:

Сценарий №1: Приложение выгружено из памяти. Приходит PUSH. Пользователь нажимает на него. Приложение запускается. OnReceiveNotificationEvent после запуска не отрабатывает. Как обработать событие - не знаю :(

Вопрос: Как получить текст (или любое другое поле - не важно) ЭТОГО push-уведомления после запуска/вывода приложения из фона?

Slava Marchenko подсказал что при закрытом приложении получить сам текст можно так:

procedure TFormMain.FormActivate(Sender: TObject);
var
  CurNotification : TPushServiceNotification;
begin
  if Length(fPushService.StartupNotifications) > 0 then
    for CurNotification in fPushService.StartupNotifications do      
       if Assigned(CurNotification) then
         Memo.Lines.Text := CurNotification.Json.ToJSON;
end;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
17 часов назад, Rusland сказал:

OnReceiveNotificationEvent после запуска не отрабатывает

где он должен отрабатывать?
вы сами должны проверять список ваших пушей как показано в предыдущем посте
соответственно, получив пуш, вы тут же можете запустить любое другое приложение в помощью интента

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 23.05.2017 в 15:46, Rusland сказал:

Slava Marchenko подсказал что при закрытом приложении получить сам текст можно так:


procedure TFormMain.FormActivate(Sender: TObject);
var
  CurNotification : TPushServiceNotification;
begin
  if Length(fPushService.StartupNotifications) > 0 then
    for CurNotification in fPushService.StartupNotifications do      
       if Assigned(CurNotification) then
         Memo.Lines.Text := CurNotification.Json.ToJSON;
end;

 

Rusland, большое спасибо! 

Это именно то, что требовалось! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 23.05.2017 в 17:46, Rusland сказал:

Slava Marchenko подсказал что при закрытом приложении получить сам текст можно так:


procedure TFormMain.FormActivate(Sender: TObject);
var
  CurNotification : TPushServiceNotification;
begin
  if Length(fPushService.StartupNotifications) > 0 then
    for CurNotification in fPushService.StartupNotifications do      
       if Assigned(CurNotification) then
         Memo.Lines.Text := CurNotification.Json.ToJSON;
end;

 

10.1 почему то не работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Не обязательно использовать этот код в OnActivate главной формы. Он работает в любой момент. У меня, например, пользователь вначале авторизуется, потом открывается следующая форма и проверяются StartupNotifications.

Изменено пользователем Тимур Абилов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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