Я уже сделал пропускной веб-сервис. Далее мне нужно сделать push-уведомление, когда мой пропуск будет обновлен. Из Обновление прохода руководства по программированию passkit, это не подробно. Можете ли вы объяснить это подробно?
Как сделать push-уведомление о пропуске
Ответы (1)
Требования и протокол для push-уведомлений задокументированы в Руководство по программированию push-уведомлений.
Есть несколько особых соображений для Passbook:
- Все push-запросы Pass должны отправляться на рабочий сервер APNS (gateway.push.apple.com через порт 2195).
- Вы должны использовать сертификат и ключ Pass Type ID для аутентификации на сервере APNS (не используйте сертификаты App APNS)
- Нет необходимости обрабатывать регистрацию устройств, вы просто используете
pushToken
, который ваш веб-сервис получил, когда устройство зарегистрировало пропуск - Полезная нагрузка должна быть пустой.
{"aps":""}
alert
,badge
,sound
и ключи пользовательских свойств игнорируются — единственная цель отправки — уведомить Passbook о том, что ваш веб-сервис имеет новый проход. Текст уведомления будет определяться ключомchangeMessage
в pass.json и различиями между старым и новым пакетами .pkpass.- Строка
changeMessage
должна содержать%@
, если вы хотите, чтобы отображалось содержимое ключаvalue
. Сообщения об изменениях могут содержать статический текст в дополнение к переменной%@
, например:"changeMessage":"New updates: %@"
. Если%@
не указано, отображается общее сообщение с типом прохода:"Store card changed"
. - Начиная с iOS9, если вы одновременно изменяете более одного поля, на экране блокировки будет отображаться только одно общее сообщение.
- Вам по-прежнему необходимо регулярно запрашивать службу обратной связи и удалять просроченные/недействительные pushToken из вашей базы данных.
Обратите внимание, что push-обновления могут быть реализованы независимо от вашей веб-службы. Apple предоставляет образец кода Objective-C в Listing. 5-1 здесь.
person
PassKit
schedule
08.04.2013
Использую ли я только php для отправки push-уведомления на проходное устройство? не объектив-с?
- person malinchhan; 09.04.2013
Настроить только веб-сервис?
- person malinchhan; 09.04.2013
Используйте то, что вам удобнее (также может быть Java, Ruby, Pearl, Python или любой другой язык). Отправка push-уведомления может быть полностью независимой от вашего веб-сервиса. Все зависит от того, как вы будете запускать пуши в будущем.
- person PassKit; 09.04.2013
мой веб-сервис уже работает, но еще не для push-уведомлений. Я никогда раньше не делал push-уведомления для приложения! Помимо особых моментов, о которых вы сказали выше, есть ли какое-либо уведомление для меня как для начинающего APNS?
- person malinchhan; 09.04.2013
Для сберкнижки толчки не очень сложны. Создайте полезную нагрузку push, откройте сокет, используя свой сертификат, отправьте полезную нагрузку, а затем закройте сокет. Устройство получит push через несколько секунд, а затем вызовет ваш веб-сервис с запросом на получение серийных номеров.
- person PassKit; 09.04.2013
Итак, мне нужно найти, как создать push-полезную нагрузку, открыть сокет с использованием сертификата прохода, отправить полезную нагрузку, и это все, что мне нужно сделать?
- person malinchhan; 09.04.2013
Вам также может понадобиться экспортировать сертификат из цепочки для ключей и подготовить его для открытия сокета. Все, что вам нужно, включая пример кода, находится в ссылке в конце ответа.
- person PassKit; 09.04.2013
Код в листинге 5.1 — это Objective-C, с которым, я думаю, вы были более знакомы. Вы можете использовать этот код для создания простого приложения командной строки, которое принимает имя файла открытого ключа, имя файла закрытого ключа и pushToken в качестве параметров.
- person PassKit; 09.04.2013
Спасибо! попробую сделать!
- person malinchhan; 09.04.2013
какой сертификат мне нужен для экспорта? (как .pem или .p12 и это из сертификата пропуска?)
- person malinchhan; 09.04.2013
Как вы думаете, я могу сделать push-уведомление для пропуска только 1 день?
- person malinchhan; 09.04.2013
У меня есть только завтра, чтобы закончить это!
- person malinchhan; 09.04.2013
Все зависит от того, что вы определяете как «завершение», потому что то, что у вас есть на данный момент, все еще необходимо перенести на работающий веб-сервер, и вам может потребоваться автоматизировать логику для автоматического обновления и загрузки новых проходов, если это будет использоваться в коммерческих целях. Но если вам просто нужно подтверждение концепции для отправки одного push-сообщения, то это займет всего пару часов с использованием языка, в котором вы разбираетесь.
- person PassKit; 09.04.2013
вот учебник по экспорту сертификата и тому, как отправить push в Java
- person PassKit; 09.04.2013
да, во-первых, мне нужен только одиночный толчок, который может автоматически обновлять пропуск без уведомления пользователя! Можете ли вы дать мне некоторые подсказки по этому поводу?
- person malinchhan; 09.04.2013
Спасибо ! Надеюсь многое понять из него!
- person malinchhan; 09.04.2013
как использовать changeMessage? и сделать запрос в службу обратной связи?
- person malinchhan; 11.04.2013
Вы должны опубликовать отдельный вопрос для
changeMessage
и службы обратной связи.
- person PassKit; 11.04.2013
+1 за распознавание push-шлюза - это производство, а не песочница!
- person tedyyu; 03.06.2014
Кто-нибудь решит эту проблему? Получено push-уведомление, но сберкнижка не обновляется автоматически. Pull для обновления работает
- person Parimal; 20.06.2017
@PassKit, пожалуйста, вы уверены, что мне следует использовать сертификат и ключ Pass Type ID? Постоянно отказывается от моего ключа. Если я использую сертификат App APNS, возврат от APNS доставляется, но на самом деле он не доставляется (конечно).
- person Autista_z; 27.07.2017
@Autista_z Да, абсолютно уверен - это очень четко указано в документации. Я бы порекомендовал дважды проверить ваш ключ и формат.
- person PassKit; 27.07.2017
@PassKit о, я глупый. Я использовал неправильный файл pem (не созданный из p12, поэтому не подписанный Apple). Моя ошибка. Спасибо
- person Autista_z; 27.07.2017