Pull to refresh

Comments 12

Да, я читал про это, но боюсь что эта рекомендация в данном случае не уместна, уведомление отправлено на все устройства и скрипт завершает свою работу.
Окей, если так, хотя эта функция fnSendIos($tokens, $text, $config) по идее же может быть вызвана несколько раз, разными частями приложения, в пределах одного запроса, и каждый раз будет реконнект. А держать инстанс клиента, в общем-то, не проблема.

А вообще, такие штуки обычно в фоне происходят — gearman и т.п. Там демон его держит до последнего, и все довольно быстро происходит. Ну вы не подумайте что я с претензиями, просто по работе постоянно с APNS вожусь, вот и возбухаю :)
В этом Вы правы, но не будут же просто копировать, код больше для тестирования, что все уходит и т.д.
Вы сильно переоцениваете людей. Будут копипастить только в путь.
Как я не пробовал — у меня так не получилось отправить одно уведомление за один push сразу на миллион устройств. Поделитесь информацией — у кого получилось.
Но, потом это оказалось и не так уж и нужно, так как мы стали пушить персональные обращения (вставляем в шаблон имя каждого пользователя).

Код обработки FeedBack сервиса работает на отдельном порту, — это в статье указано не было, очевидно это скрыто в недрах библиотеки. Кстати очень полезно для ведения статистики, кто отключился или удалил приложение.

Пушить можно и на устройства, на которых не запущено приложение Не знаю, есть ли эта возможность в данной либе (не слова ни сказано)

Как реализовано у нас:
— сделан отдельный сервис (демон)
— в сервисе держится в памяти hash-таблица: наш-id- tocken
— общается с внешним миром по memcached пртоколу
— set отправляет сообщение на АПНС и GCM сервис, используем только наш id
— есть разные мониторинговые команды: get stats
— и служебные add delete

Принимает данные с разных клиентов: WEB-морда — если поступило новое сообщение, cron script — если наступило запланированное событие или скрипт-рассыльщик для маркетинговых рассылок (по географ признаку).

и еще отдельная тема расшифровки статусов GCM сервиса. Не всегда он 200Ok
один пуш — один токен — один девайс. Миллион девайсов — миллион пушей. Можно разбить просто на нексколько соединений (как это рекомендует делать Apple).
Для APNS существует довольно неплохая библиотека — Notificato. В частности, насколько я помню, это единственная библиотека где корректно реализована обработка ошибок при массовой отправке пушей. При отпраке пуша, он попадает в буфер и ждет подтверждения о успешной обработке. Если происходит ошибка при отправке сообщения, поскольку APNS гарантирует что после ошибки ничего никуда отправляться не будет, мы можем снова послать содержимое буфера… По сути так же как и в TCP. Так же есть поддержка пула соединений.

Я уже где-то год не слежу за темой, но на тот момент это была единственная достойная имплементация. Альтернативу мог составить только модуль node-apn для Node.JS, где так же все это реализовано.

Собственно на тот момент хотел реализовать маленький демон на ReactPHP, который можно было бы реюзать из проекта в проект, но в итоге решили плюнуть на всю эту возьню и испльзовать Amazon SNS. Если бы кто аргументированно смог сказать что это хоть кому-то нужно, я бы мог собрать все наработки по этой теме в библиотечку (APNS, GCM, WNS + хэндлинг девайсов), ибо на данный момент я не вижу необходимости в оном. Слишком много сервисов позволяют использовать пуши без головной боли.
В частности, насколько я помню, это единственная библиотека где корректно реализована обработка ошибок при массовой отправке пушей.

Вы будете удивлены, но библиотека в примере как раз это и реализует в полном объеме. А насчет сервисов, стоит дополнить что некоторые из них до 7 500 000 уведомлений рассылают на бесплатных тарифах.
ApnsPHP это не совсем библиотека. это полноценное решение (аля бывшая некогда RAPNS). Его можно использовать как stand-alone приложение. Использовал оное года два назад, штука хорошая, но notificato больше подходит для использования именно как «библиотеки». Меня больше прельщает идея иметь библиотеку, которая хорошо справляется с задачей и легко интегрируется в проект.
А как у нее с юникод-6? ApnsPHP не шлет (вернее шлет, но криво) такие смайлы без допилки — пуш либо не приходит вообще, либо вместо emoji приходят вопросы.
А SNS да, удобная штука.
Мы юзаем parse.com для рассылки пушей. Этот сервис предоставляет унифицированный интерфейс для рассылок на Android и iOS и инструменты для дебага пушей. Этакая очень полезная прослойка между приложением и приемниками пушей, снимает часть проблем.
Only those users with full accounts are able to leave comments. Log in, please.