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, чтобы он заметил это изменение в идентификаторе пакета), и вам понадобится профиль подготовки подстановочного знака.