Как сделать push-уведомление о пропуске

Я уже сделал пропускной веб-сервис. Далее мне нужно сделать push-уведомление, когда мой пропуск будет обновлен. Из Обновление прохода руководства по программированию passkit, это не подробно. Можете ли вы объяснить это подробно?


person malinchhan    schedule 08.04.2013    source источник


Ответы (1)


Требования и протокол для push-уведомлений задокументированы в Руководство по программированию push-уведомлений.

Есть несколько особых соображений для Passbook:

  1. Все push-запросы Pass должны отправляться на рабочий сервер APNS (gateway.push.apple.com через порт 2195).
  2. Вы должны использовать сертификат и ключ Pass Type ID для аутентификации на сервере APNS (не используйте сертификаты App APNS)
  3. Нет необходимости обрабатывать регистрацию устройств, вы просто используете pushToken, который ваш веб-сервис получил, когда устройство зарегистрировало пропуск
  4. Полезная нагрузка должна быть пустой. {"aps":""}
  5. alert, badge, sound и ключи пользовательских свойств игнорируются — единственная цель отправки — уведомить Passbook о том, что ваш веб-сервис имеет новый проход. Текст уведомления будет определяться ключом changeMessage в pass.json и различиями между старым и новым пакетами .pkpass.
  6. Строка changeMessage должна содержать %@, если вы хотите, чтобы отображалось содержимое ключа value. Сообщения об изменениях могут содержать статический текст в дополнение к переменной %@, например: "changeMessage":"New updates: %@". Если %@ не указано, отображается общее сообщение с типом прохода: "Store card changed".
  7. Начиная с iOS9, если вы одновременно изменяете более одного поля, на экране блокировки будет отображаться только одно общее сообщение.
  8. Вам по-прежнему необходимо регулярно запрашивать службу обратной связи и удалять просроченные/недействительные pushToken из вашей базы данных.

Обратите внимание, что push-обновления могут быть реализованы независимо от вашей веб-службы. Apple предоставляет образец кода Objective-C в Listing. 5-1 здесь.

person PassKit    schedule 08.04.2013
comment
Использую ли я только php для отправки push-уведомления на проходное устройство? не объектив-с? - person malinchhan; 09.04.2013
comment
Настроить только веб-сервис? - person malinchhan; 09.04.2013
comment
Используйте то, что вам удобнее (также может быть Java, Ruby, Pearl, Python или любой другой язык). Отправка push-уведомления может быть полностью независимой от вашего веб-сервиса. Все зависит от того, как вы будете запускать пуши в будущем. - person PassKit; 09.04.2013
comment
мой веб-сервис уже работает, но еще не для push-уведомлений. Я никогда раньше не делал push-уведомления для приложения! Помимо особых моментов, о которых вы сказали выше, есть ли какое-либо уведомление для меня как для начинающего APNS? - person malinchhan; 09.04.2013
comment
Для сберкнижки толчки не очень сложны. Создайте полезную нагрузку push, откройте сокет, используя свой сертификат, отправьте полезную нагрузку, а затем закройте сокет. Устройство получит push через несколько секунд, а затем вызовет ваш веб-сервис с запросом на получение серийных номеров. - person PassKit; 09.04.2013
comment
Итак, мне нужно найти, как создать push-полезную нагрузку, открыть сокет с использованием сертификата прохода, отправить полезную нагрузку, и это все, что мне нужно сделать? - person malinchhan; 09.04.2013
comment
Вам также может понадобиться экспортировать сертификат из цепочки для ключей и подготовить его для открытия сокета. Все, что вам нужно, включая пример кода, находится в ссылке в конце ответа. - person PassKit; 09.04.2013
comment
Код в листинге 5.1 — это Objective-C, с которым, я думаю, вы были более знакомы. Вы можете использовать этот код для создания простого приложения командной строки, которое принимает имя файла открытого ключа, имя файла закрытого ключа и pushToken в качестве параметров. - person PassKit; 09.04.2013
comment
Спасибо! попробую сделать! - person malinchhan; 09.04.2013
comment
какой сертификат мне нужен для экспорта? (как .pem или .p12 и это из сертификата пропуска?) - person malinchhan; 09.04.2013
comment
Как вы думаете, я могу сделать push-уведомление для пропуска только 1 день? - person malinchhan; 09.04.2013
comment
У меня есть только завтра, чтобы закончить это! - person malinchhan; 09.04.2013
comment
Все зависит от того, что вы определяете как «завершение», потому что то, что у вас есть на данный момент, все еще необходимо перенести на работающий веб-сервер, и вам может потребоваться автоматизировать логику для автоматического обновления и загрузки новых проходов, если это будет использоваться в коммерческих целях. Но если вам просто нужно подтверждение концепции для отправки одного push-сообщения, то это займет всего пару часов с использованием языка, в котором вы разбираетесь. - person PassKit; 09.04.2013
comment
вот учебник по экспорту сертификата и тому, как отправить push в Java - person PassKit; 09.04.2013
comment
да, во-первых, мне нужен только одиночный толчок, который может автоматически обновлять пропуск без уведомления пользователя! Можете ли вы дать мне некоторые подсказки по этому поводу? - person malinchhan; 09.04.2013
comment
Спасибо ! Надеюсь многое понять из него! - person malinchhan; 09.04.2013
comment
как использовать changeMessage? и сделать запрос в службу обратной связи? - person malinchhan; 11.04.2013
comment
Вы должны опубликовать отдельный вопрос для changeMessage и службы обратной связи. - person PassKit; 11.04.2013
comment
+1 за распознавание push-шлюза - это производство, а не песочница! - person tedyyu; 03.06.2014
comment
Кто-нибудь решит эту проблему? Получено push-уведомление, но сберкнижка не обновляется автоматически. Pull для обновления работает - person Parimal; 20.06.2017
comment
@PassKit, пожалуйста, вы уверены, что мне следует использовать сертификат и ключ Pass Type ID? Постоянно отказывается от моего ключа. Если я использую сертификат App APNS, возврат от APNS доставляется, но на самом деле он не доставляется (конечно). - person Autista_z; 27.07.2017
comment
@Autista_z Да, абсолютно уверен - это очень четко указано в документации. Я бы порекомендовал дважды проверить ваш ключ и формат. - person PassKit; 27.07.2017
comment
@PassKit о, я глупый. Я использовал неправильный файл pem (не созданный из p12, поэтому не подписанный Apple). Моя ошибка. Спасибо - person Autista_z; 27.07.2017