IOS push-уведомления, когда приложение удаляется и затем переустанавливается
Я столкнулся с необычным сценарием, когда пользователь продолжает получать уведомления, когда мое приложение было удалено и затем переустановлено. Сценарий выглядит следующим образом:
- пользователь устанавливает приложение из AppStore
- пользователь регистрируется в нашем приложении, и мы регистрируем его для уведомлений
- пользователь удаляет приложение со своего устройства.
- пользователь переустанавливает приложение из AppStore
- пользователь получает уведомление, даже если он еще не запустил приложение, зарегистрировался и т.д.
Мое понимание архитектуры APN заключалось в том, что как только ваше приложение будет удалено с вашего устройства, оно отменено из APN самой ОС. Повторная установка приложения не приведет к повторному включению уведомлений, пока вы не назовете "registerForRemoteNotificationTypes", поэтому, если записка была отправлена на устройство с использованием старого токена, APN не отправили бы его, поскольку указанный выше метод не был вызван.
Неужели это не так?
Ответы
Ответ 1
Токен остается неизменным. Это то же самое для всех приложений на устройстве. Он изменяется только при изменении версии ОС. Однако это все еще не объясняет странное поведение, с которым вы столкнулись.
Я считаю, что только после того, как Apple определит, что приложение было удалено с устройства (что обычно происходит при отправке уведомления о приложении на конкретное устройство после его удаления), он отменяет регистрацию приложения.
Если приложению на устройстве не было отправлено никаких уведомлений, которые удалили приложение между временем удаления и временем новой установки, Apple не знает, что устройство удалило приложение, и поэтому оно все еще зарегистрировано для APNS.
Поведение службы обратной связи поддерживает мою теорию - если вы удалите приложение и вызовите службу обратной связи, вы не получите токен устройства, удалив приложение. Только после того, как вы попытаетесь отправить уведомление на это устройство, Apple обнаружит удаление и вернет этот токен устройства в службу обратной связи.
Последнее, что я должен добавить - если удаленное приложение является последним на устройстве, которое было зарегистрировано для push-уведомлений, служба APN никогда не узнает, что приложение было удалено, и поэтому оно все равно будет зарегистрировано для APN после переустановить.
Ответ 2
При удалении приложения ОС не отменяет регистрацию с APNS. Вы должны отправить уведомление на устройство, которое удалило приложение, чтобы "удалить его". Это может занять несколько попыток от APNS, пока не выяснит, что приложение было удалено.