В моем приложении iOS
какое событие будет запущено, когда пользователь a удалит приложение?
Обнаруживать приложение iOS для удаления?
Ответ 1
Нет такой вещи, извините.
Лучшее, что вы можете сделать, это выполнить проверку уведомлений UIApplicationWillTerminateNotification
, но, что более важно, сохранить состояние вашего приложения (например, на сервере) при переходе на задний план и пересечь пальцы, пользователь не удалит ваши приложение, когда оно не работает. Поскольку после закрытия вашего приложения у вас больше нет контроля.
EDIT: поскольку вы хотите очистить содержимое связки ключей при удалении приложения, я предлагаю вам рассмотреть этот другой вопрос. В основном, что предлагает некоторые ответы, не нужно удалять содержимое брелка во время удаления, а вместо этого, когда пользователь сначала запускает приложение с помощью NSUserDefaults.
EDIT: Луис Аскорбе прокомментировал идею: используя службу обратной связи Push Notification (https://stackoverflow.com/a/7912045/157401) Конечно, это далеко не идеально (не все пользователи подписываются на уведомления, токены уведомлений могут быть признаны недействительными по другим причинам и т.д.), но это все еще необходимо рассмотреть.
EDIT: Начиная с iOS 10.3 Beta 2, данные о связях ключей больше не сохраняются при удалении приложения.
Ответ 2
Мы не можем точно знать, когда пользователь удалил приложение. Тем не менее, я столкнулся с ситуацией сегодня, чтобы обнаружить удаление приложения, которое является как устройством, так и специфичным для пользователя (только в конкретном случае это будет известно).
Следующий сценарий может помочь вам, где вам нужно удалить данные на основе пользователя и устройства: Если вы используете службы API доступа и аутентификацию для своего приложения, убедитесь, что вы сделали это, чтобы отслеживать его.
- Убедитесь, что вы сохранили все данные пользователя, используя комбинацию идентификатора пользователя и идентификатора устройства в качестве первичного ключа.
- Рассмотрим значение bool для каждого идентификатора устройства для каждого пользователя.
- Когда пользователь входит в приложение, выполните служебный вызов и установите для bool значение true для этого идентификатора устройства и идентификатора пользователя на сервере.
- При отходе пользователя от пользователя выполните вызов службы и установите bool в false для этого идентификатора устройства и идентификатора пользователя. Удалите все пользовательские данные (с устройства и бэкэнд) во время выхода из системы (зависит от бизнес-логики).
- Теперь, если пользователь снова войдет в систему и удалит приложение без выхода из системы, bool будет оставлен true, и все соответствующие данные пользователя и устройства не будут удалены.
- Когда пользователь входит в систему на устройстве, проверьте это значение bool перед обновлением до значения true. Если это уже верно, это означает, что тот же пользователь удалил это приложение на этом конкретном устройстве и снова установил его на том же устройстве.
Обратите внимание, что эта логика работает только в том случае, если в вашем приложении есть служебные вызовы, и изначально выполняется некоторая аутентификация. Кроме того, мы можем это знать, только если тот же пользователь пытается войти в одно и то же устройство. Удаление этой программы в других случаях не может быть известно с помощью этой логики.
Надеюсь, что такая логика может помочь кому-то, поскольку мы сейчас используем эту логику. Если я ошибаюсь, я новичок. Если я ошибаюсь.
Ответ 3
Я боюсь, что такого уведомления нет. Когда ваши приложения не работают, никоим образом не могут быть уведомлены об изменениях!
Вместо этого вам нужно сохранить любое состояние, когда пользователь нажимает кнопку "домой", т.е. когда он "уходит в отставку". (Там есть обратный вызов в UIApplicationDelegate
, и вы также можете прослушивать уведомления). В общем, я бы не рекомендовал прослушивать UIApplicationWillTerminateNotification
, поскольку он редко вызывается в iOS4, где поддерживается многозадачность.