Подтвердить что ты не робот

IOS push-уведомления, когда приложение удаляется и затем переустанавливается

Я столкнулся с необычным сценарием, когда пользователь продолжает получать уведомления, когда мое приложение было удалено и затем переустановлено. Сценарий выглядит следующим образом:

  • пользователь устанавливает приложение из AppStore
  • пользователь регистрируется в нашем приложении, и мы регистрируем его для уведомлений
  • пользователь удаляет приложение со своего устройства.
  • пользователь переустанавливает приложение из AppStore
  • пользователь получает уведомление, даже если он еще не запустил приложение, зарегистрировался и т.д.

Мое понимание архитектуры APN заключалось в том, что как только ваше приложение будет удалено с вашего устройства, оно отменено из APN самой ОС. Повторная установка приложения не приведет к повторному включению уведомлений, пока вы не назовете "registerForRemoteNotificationTypes", поэтому, если записка была отправлена ​​на устройство с использованием старого токена, APN не отправили бы его, поскольку указанный выше метод не был вызван.

Неужели это не так?

4b9b3361

Ответ 1

Токен остается неизменным. Это то же самое для всех приложений на устройстве. Он изменяется только при изменении версии ОС. Однако это все еще не объясняет странное поведение, с которым вы столкнулись.

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

Поведение службы обратной связи поддерживает мою теорию - если вы удалите приложение и вызовите службу обратной связи, вы не получите токен устройства, удалив приложение. Только после того, как вы попытаетесь отправить уведомление на это устройство, Apple обнаружит удаление и вернет этот токен устройства в службу обратной связи.

Последнее, что я должен добавить - если удаленное приложение является последним на устройстве, которое было зарегистрировано для push-уведомлений, служба APN никогда не узнает, что приложение было удалено, и поэтому оно все равно будет зарегистрировано для APN после переустановить.

Ответ 2

При удалении приложения ОС не отменяет регистрацию с APNS. Вы должны отправить уведомление на устройство, которое удалило приложение, чтобы "удалить его". Это может занять несколько попыток от APNS, пока не выяснит, что приложение было удалено.