Apple Wallet: Является ли Push Token уникальным для каждого устройства?

Я сделал реализацию, в которой я могу создавать проходы для кошелька Apple. После того, как устройство зарегистрируется на сервере, будет ли отправлен токен, уникальный для этого устройства, или он изменится в будущем? Если да, то каковы причины этого?


person ppavl    schedule 22.01.2019    source источник


Ответы (1)


Да — для обеспечения конфиденциальности push-токены регулярно меняются — это может происходить случайным образом или при изменении оборудования (перенос пользователя на новый телефон) или часто при обновлении iOS.

Ваша реализация API веб-сервиса увидит это как новый запрос на регистрацию, и вы узнаете, что старый токен недействителен, либо через API обратной связи APNS (теперь устаревший), либо получив ответ ExpiredProviderToken (403) от более нового API HTTP2 APNS.

person PassKit    schedule 22.01.2019
comment
Спасибо за ответ. Я пытаюсь выяснить, как связать, какие проходы установлены на конкретном устройстве. Но если идентификатор устройства и push-токен меняются, как я могу создать указанное выше сопоставление? Отношения прохода и устройства, которые я реализую для процесса обновления, точно соответствуют инструкциям developer.apple.com/library/archive/documentation/ - person ppavl; 22.01.2019
comment
Вы будете уведомлены об изменениях через конечную точку регистрации веб-службы. Этот URL-адрес включает в себя passTypeIdentifier и serialNumber и аутентифицируется с помощью authenticationToken, что должно быть всем, что вам нужно для сопоставления прохода с идентификатором устройства и токеном. - person PassKit; 23.01.2019
comment
Я спрашиваю об этом, потому что у меня была проблема, когда устройство, которое добавило три прохода в кошелек, для каждого прохода, созданного устройством, отправляло мне другой идентификатор устройства и один и тот же токен push. В результате в процессе обновления, когда устройство запрашивает серийные номера, будет использоваться последний созданный идентификатор устройства, и этот идентификатор устройства в моей базе данных регистрируется только с последним созданным проходом, поскольку сервер идентифицирует это устройство как новое устройство. Итак. это была проблема, потому что я не мог обновить все проходы, только последний. - person ppavl; 23.01.2019
comment
Понял. Похоже, это может быть ошибка в реализации Apple. Предлагаю открыть отчет об ошибке. - person PassKit; 23.01.2019