APNS: отправка одного и того же уведомления более одного раза - PullRequest
0 голосов
/ 17 октября 2011

У меня есть приложение, в которое я могу отправлять push-уведомления.Когда пользователь что-то сохраняет в приложении, время сохранения заносится в базу данных mysql на моем сервере в таблице «active_users».Мой сервер запускает сценарий, чтобы увидеть, истекло ли время, и если это так, он отправляет уведомление на устройство.

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

Что действительно странно, так это то, что у меня есть push_queue (таблица в моей БД), в которой находятся сообщения для отправки (токен и полезная нагрузка)положить, когда пришло время их подтолкнуть.Когда я запускаю тест, сообщение добавляется в push_queue, и в моем лог-файле все записывается так, как будто все прошло нормально.

Мой вопрос сейчас: могу ли я отправлять только одно push-уведомление на каждый токен устройства?Это единственное решение, которое я могу придумать.

Это вставка из моего лог-файла: http://pastebin.com/whkpV3F6 Как видите, это один и тот же токен устройства, используемый в обоих сообщениях.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 17 октября 2011

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

  1. Если приложение удалено, за кулисами на устройстве Apple получает уведомление и токен становится недействительным. Вы должны опрашивать Apple «изредка» за этот отзыв, сообщая, на какие токены больше не следует отправлять сообщения. Вы ДОЛЖНЫ опросить службу обратной связи, иначе Apple лишит вас возможности отправлять push-уведомления.

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

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

Что более вероятно, возможно, это то, что сообщение просто не было доставлено ... Я не верю, что push-уведомления гарантированно доставляются, так же, как надежность SMS. Я не думаю, что Apple запрещает вам отправлять одно и то же сообщение более одного раза, но я могу ошибаться в этом; возможно, является некоторым ограничителем в этом отношении, если повторяющиеся сообщения отправляются в быстрой последовательности. Не уверен насчет этого.

0 голосов
/ 18 октября 2011

Мне удалось найти решение самостоятельно.Это моя ситуация и решение:

Я запускаю свой веб-сервер с Synology Diskstation (DS211 +).Чтобы иметь возможность запускать открытое SSL-соединение через PHP, openssl должен быть включен.Чтобы включить PHP на Synology Diskstation, выполните следующие действия:

1) Откройте терминал на вашем Mac) 2) Создайте SSH-соединение и подключитесь как root (введите пароль администратора) 3) cd /usr / syno / etc.defaults / 4) vi php.ini

Теперь ищите строку в vi с помощью / string: /openssl.dll Эта строка начинается с точки с запятой (;), что означает, что она закомментированаиз.Раскомментируйте строку "extension = php_openssl.dll".

Теперь перезапустите сервер apache, используя следующую команду: /usr/syno/etc.defaults/rc.d/S97apache-user.sh restart

Теперь должно работать идеально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...