2014-11-26 2 views
2

Я создал мобильное приложение с помощью Delphi XE7. Программа отправляет push-уведомления через Kinvey и GCM. После установки APK в первый раз он отправляет одно push-уведомление, которое работает правильно. В течение секунд времени (тот же APP на том же устройстве) он отправляет дважды и третий раз три раза и так далее. Я обнаружил, что проблема вызвана добавлением дополнительных идентификаторов в Kinvey/users. Поэтому, если я вручную удалю все идентификаторы и снова установлю APK, он будет работать нормально.Полученные множественные уведомления о Push

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

Заранее благодарен!

enter image description here

+0

http://imgur.com/xEjHJj0 Это настройки push-компонентов. Спасибо! –

ответ

1

Я имел та же проблема. AFAIK ответ нет, установка нового APK или удаление приложения не отменяет регистрацию вашего идентификатора от вашего внутреннего поставщика (Kinvey, Parse, Azure).

Моего решения было добавить collapse_key в ГОЙ полезной нагрузке

Ps: В моем случае, концентратор Уведомления имеет срок действия для регистрации (я не знаю, если Kinvey есть это тоже), поэтому толчок получил то же самое время так как регистрации BUT рухнули, так что вы просто «получите» один до тех пор, пока устаревшие регистрации не истекут

+0

Таким образом, эти поставщики имеют несколько записей регистрации для одного и того же устройства и отправляют каждое сообщение n раз, а не один раз (где n - это число, когда клиентское приложение зарегистрировалось у поставщика)? – mjn

+0

Да, поставщик отправляет одно уведомление для каждой регистрации (или зависит от вашей логики, но принимает трансляцию для примера), поэтому ваше устройство будет получать n уведомлений, где n = счет регистрации (с тем же идентификатором устройства). Добавление файла collapse_key приведет к сбою уведомлений –

+0

. Внешний сервер Google GCM не показывает этого странного (неэффективного) поведения. Он сначала проверяет наличие регистрационного идентификатора перед добавлением идентификатора в список известных устройств, поэтому вместо GCM и устройства будет отправлено только одно сообщение, поэтому не нужно использовать collapse_key и гораздо меньше использования полосы пропускания.(Я бы подумал, что это ошибка, если Kinvey хранит идентификатор устройства более одного раза) – mjn

1

кажется, что вы используете TBackendPush компонент не как он предназначен для.

«Бэкэнд» в названии компонента является убедительным свидетельством того, что компонент должен использоваться в серверном приложении, которое может инициировать широковещательные сообщения для всех зарегистрированных устройств.

Размещение на стороне клиента может привести к неожиданным результатам. Кроме того, включив его в мобильное приложение, вы включаете учетные данные учетной записи Kinvey в файле APK. Учетные данные могут быть извлечены другими, а затем использованы для отправки сообщений с вашего аккаунта Kinvey.

Если вам нужен способ отправки уведомления толчка, есть два пути - однако я не знаю, если Kinvey supoorts как:

  • послать один HTTP (S) запрос от устройства на свой собственный внутренний сервер, который вызывает широковещательный запрос Kinvey/GCM
  • послать вверх по течению («устройство к облаку») сообщение от устройства к вашему фоновому серверу, как описано в https://developer.android.com/google/gcm/ccs.html
Смежные вопросы