Reset настройка разрешения push-уведомлений в ios5

Я разрабатываю приложение, которое использует push-уведомления и тестирование на устройстве с iOS 5.1.1. Я хотел бы протестировать сценарий, когда пользователю предлагается указать push-уведомления во время первого запуска приложения. Диалог появляется при первом вызове registerForRemoteNotificationTypes, но никогда не появляется снова, даже если приложение будет снова установлено с нуля. Как очистить настройку, чтобы снова появилось диалоговое окно?

Тот же вопрос был опубликован раньше, но ответы не работают для iOS 5 или новее, как указано в комментариях там.

Apple документация говорит, чтобы удалить приложение и беспорядок с часами, чтобы он выглядел так, как приложение было удалено в течение дня, но это не работает на iOS5.

Еще один ответ предложил запустить General → Reset → Erase All Content And Settings - я попробовал это, но он заморозил мое устройство, и мне пришлось активировать его. В любом случае, это тяжелое решение, которое не подходит для тестирования.

Еще один ответ предложил удалить запись вашего приложения из /private/var/mobile/Library/RemoteNotification/Clients.plist, но этот файл не существует на iOS5.

Есть ли способ сделать это на iOS5?

Ответ 1

Я нашел решение, которое работает, если ваше устройство заблокировано:

  • Используйте приложение типа iFile, чтобы открыть файл /var/mobile/Library/SpringBoard/applicationstate.plist с помощью средства просмотра списка свойств
  • Найдите идентификатор пакета приложений и удалите ключ SBRemoteNotificationClient
  • Перезапустите SpringBoard - перезагрузите устройство, SSH на устройство и запустите killall SpringBoard или используйте приложение Respring.

При следующем запуске приложения он снова отобразит диалоговое окно разрешения уведомлений.

Я тестировал это на iOS 5.1.1.

Ответ 2

Если ваши кодовые пути для iOS 5 и iOS 6 не слишком разные, самым простым вариантом является, вероятно, просто проверить это конкретное поведение на iOS 6 - обратные вызовы, которые вы получаете на iOS 5, должны быть достаточно похожи, чтобы это не было проблема.

В качестве альтернативы измените идентификатор пакета приложения. Немного утомительный (в прошлом мне нужно было перезапустить Xcode, чтобы он заметил это изменение в идентификаторе пакета), и вам понадобится профиль подготовки подстановочного знака.