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

Как убрать лишние уведомления в шторке при пуше?


Kitty

Вопрос

Приложение поддерживает получение пушей. Я хочу, чтобы при получении пуша появлялось уведомление в шторке.

1. Запускаю приложение на телефоне.

2. Убираю его полностью из фона.

3. Посылаю с сервера пуш с тестовым текстом.

4. На телефоне вижу и слышу, что пришло уведомление.

5. Тяну шторку вниз а там ТРИ одинаковых уведомления с моим тестовым текстом т.е. два лишних.

Как убрать дублирование уведомлений в шторке?

Код:

void __fastcall TForm1::PushEvents1PushReceived(TObject *Sender, TPushData * const AData)

{

 NotificationCenter1->CancelAll();

 if (NotificationCenter1->Supported() && AData->Message != "")
  {
   TNotification * myNotification = NotificationCenter1->CreateNotification();

	__try
	{
	 NotificationCenter1->CancelAll();
	 myNotification->AlertBody = AData->Message;
	 NotificationCenter1->PresentNotification(myNotification);
	}
	__finally
			{
			 myNotification->DisposeOf();
			}
  }

}

 

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

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

  • 0

Не совсем понятно... Так почему гуглосервис посылает три раза?

А как правильно все организовать?

Нужно уведомление пользователю. Как правильно сделать чтобы пользователь получил уведомление?Нажал на него и открылось приложение. Спасибо.

Ссылка на комментарий
  • 0
  • Модераторы
Только что, Kitty сказал:

Не совсем понятно... Так почему гуглосервис посылает три раза?

сколько пришло пушей от сервера столько и публикуется в шторку, отсебятину он не добавляет

Ссылка на комментарий
  • 0
  • Модераторы
19 минут назад, Kitty сказал:

Я пишу сообщение в панели kinvey. Посылаю пуш. В шторке вижу 3 штуки одинаковых. Кто добавил отсебятину? Kinvey?

я незнаю что делает кинвей, не пользовался никогда.

Но в Firebase такого точно нету, все четко работает

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

Чудеса продолжаются... У меня есть планшет и телефон с андроид. Проверила эксперимент - на оба устройства установила приложение.

Послала пуш. На планшете в шторке как и положено одно уведомление - на телефоне три дубляжа. А может мой телефон Akta A4 такой кривой? :)

 

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

 

Цитата

Но в Firebase такого точно нету, все четко работает

Kinvey это просто облачный сервис с удобной панелью для посылки пушей и других сервисов. А сам Kinvey использует в своих настройках данные из Firebase (ключ и id). Видимо у меня просто телефон такой странный... Проверила на трех устройствах - все нормально, только в моем телефоне троекратный дубляж...

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

Kitty,а вы попробуйте переустановить свое приложение.Удалить и заново поставить.Получите +1 к пушам. Было 3,станет 4.Больше переустановок,больше пушей. Когда работал с Kinvey была такая же история.В блогах на Embarcadero обсуждали даже.Если в кратце и по памяти,то при переустановке приложения,в Kinvey дублируется запись устройства на которое отправляется push.Что бы избежать этого,надо делать доп проверку на уже существующий токен для данного устройства.Повторюсь что это по памяти,но суть понятна.Можете поискать в блогах Sarina Dupont на Embarcadero.

Собственно после этого я и перешел на нативные пуши. Потому как написал многоуважаемый ZuBy:

Цитата

все четко работает

Вот,нашел:

https://community.embarcadero.com/blogs/entry/remote-push-notifications-on-android-with-rad-studio-xe6-795

Второй коммент.

Цитата

If I debug my app 15 times and deploy it to my Android tablet, then I will get 15 copies of my notification.

15 раз установил,15 пушей.

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

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

Действительно при каждой установке создается новый токен. Вроде и при обновлении прошивки телефона новый токен и еще при нескольких условиях. По этой причине вставку в базу токена выполняю следующим запросом:

INSERT INTO gcm_dixy (`DeviceID`, `DeviceToken`, `last_update`, `add_date`, `RequestCount`, `Active`) VALUES 
('$DeviceID','$DeviceToken', NOW(),NOW(), 1, 1) ON DUPLICATE KEY UPDATE 
`DeviceToken` = '$DeviceToken', `last_update` = NOW(), `RequestCount` = `RequestCount` + 1, `Active` =  1

Главное тут "ON DUPLICATE KEY UPDATE" , уникальный ключ в таблице - DeviceID, он никогда не меняется на устройстве.

Видимо программистам из Kinvey не известен этот нюанс, вот глюк и всплывает.

Изменено пользователем Евгений Корепов
Упростил SQL запрос
Ссылка на комментарий
  • 0
  • Модераторы
15 минут назад, wamaco сказал:

а  DeviceID как получаете? 

http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html 

смотрите Delphi код, там есть получение DeviceID 

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

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

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

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

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

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

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

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

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

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

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