Ответ 1
Там нет делегата. Вам необходимо периодически UIApplication
свойство enabledRemoteNotificationTypes
, например, в applicationDidBecomeActive:
Для деталей проверьте эти ответы:
Определите на iPhone, если пользователь включил push-уведомления
Вид на экране блокировки и включенные удаленные уведомления Типы - iOS5
Редактировать:
Если вам необходимо сбросить настройки push-уведомлений и уведомлений о разрешениях, ознакомьтесь с технической запиской Apple TN2265. В разделе "Сброс уведомления о разрешениях push-уведомлений на iOS" объясняется, как сбросить настройки на iOS. Однако многие разработчики жалуются, что процедура не работает. Не уверен, что эта ссылка будет работать, вам понадобится доступ к форуму Apple, но это одна из тем об этой проблеме.
Я сам задавался вопросом, может быть, Apple удалила диалоговое окно разрешений в iOS 5.1. Иначе зачем им приложение показывать предупреждение? Согласно рекомендациям AppStore до июня 2016 года:
5.3 Приложения, отправляющие Push-уведомления без предварительного получения согласия пользователя, будут отклонены
Например, Path (приложение) просит пользователя включить push-уведомление в середине процесса подписки, а не при первом запуске приложения.
В любом случае не уверен, что должно быть целью приглашения, так как приложение не может запросить состояние параметра уведомления. В частности, приложение может проверять, какие типы уведомлений (с помощью enabledRemoteNotificationTypes
) включены, но НЕ, если push-уведомления для определенного приложения включены или отключены (переключатель включения/выключения центра уведомлений вверху). По крайней мере, такое поведение в iOS 5.1. Даже если пользователь отключает уведомления для этого приложения, оно все равно может зарегистрироваться для push-уведомлений (используя registerForRemoteNotificationTypes
) и получит токен APNS.