#push-notification #apple-push-notifications
Вопрос:
Мой вопрос задавали на форумах разработчиков Apple, но я видел, как такого рода APNS задавали вопросы, оставленные без ответа в течение четырех лет. У меня нет роскоши ждать, поэтому я разместил здесь перекрестный пост 🤞
Apple заявляет следующее:
Регулярно Обновляйте Свой Токен. В целях безопасности APNs требует, чтобы вы регулярно обновляли свой токен. Обновляйте свой токен не чаще одного раза в 20 минут и не реже одного раза в 60 минут. APNs отклоняет любой запрос, маркер которого содержит метку времени, возраст которой превышает один час. Аналогично, APNs сообщает об ошибке, если вы повторно создаете свои токены более одного раза каждые 20 минут. На сервере поставщика настройте повторяющуюся задачу для воссоздания вашего токена с текущей меткой времени. Снова зашифруйте маркер и прикрепите его к последующим запросам уведомлений. Мы используем функцию Azure для отправки push-уведомлений и запланированную функцию, подобную cron, для обновления маркеров сервера APNS.
Первоначально у меня была проблема, потому что я не использовал отдельное HTTP-соединение для каждого идентификатора команды, это вызвало некоторые ошибки HTTP 403 InvalidProviderToken.
У меня есть несколько сред (Dev, UAT, LIVE), и я отключил все, кроме LIVE, полагая, что они могут мешать друг другу, способствуя ошибке #403.
Каждая среда создает свои токены APNS каждые 51 минуту, каждый толчок из этой среды использует этот токен до тех пор, пока он не будет обновлен.
Будет ли Apple принимать только самый последний токен, используемый в push, и, следовательно, отклонять любые токены, используемые в других средах, до тех пор, пока они не будут обновлены в этой среде?
Например, предположим, что каждый сервер запускается через минуту друг за другом и отправляет запрос каждую минуту через 5 минут…
T 0:00 - DEV Booted, Refresh DEV Token (Token A)
T 1:00 - UAT Booted, Refresh UAT Token (Token B)
T 2:00 - LIVE Booted, Refresh LIVE Token (Token C)
...
T 5:01 - Push on DEV (Token A)
T 5:02 - Push on UAT (Token B)
T 5:03 - Push on LIVE (Token C)
LIVE будет работать, потому что у него есть последний токен APNS (C), но будут ли DEV и UAT отклонены с 403, потому что токен не является последним, или все три будут работать, потому что аренда токена должна длиться 60 минут?
Другими словами, если push использует новый токен, делает ли это недействительными все остальные токены?
Очень тесно связано, предположительно, я бы затем нажал 429 TooManyProviderTokenUpdates, поскольку три среды могут запускаться одновременно и пытаться обновить в первую минуту, нарушая правило «не более 20 минут»?
Я считаю, что среды Sandbox и LIVE APNS можно обновлять одновременно.
Спасибо, Роб.