objective c – Обнаруживать, когда пользователь меняет настройки уведомлений приложения

Мне нужно всегда знать, какие параметры пользователь выбирает в настройках push-уведомлений.
(Возможные варианты: предупреждение, звук и значки)

Поэтому, когда я запускаю приложение, я звоню:

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 

и определить, что пользователь выбрал.

Но как я могу определить, изменит ли пользователь настройки в течение срока действия приложения?
Есть ли какой-нибудь метод делегата, вызываемый при изменении с этими настройками?

Делегата нет. Вы должны периодически UIApplication свойство enabledRemoteNotificationTypes , например, в applicationDidBecomeActive:

Для получения дополнительной информации проверьте эти ответы:

Определите на iPhone, если пользователь включил push-уведомления

Просмотр экрана блокировки и enabledRemoteNotificationTypes – iOS5

Редактировать:
Если вам нужно сбросить настройку push-уведомления и уведомление о разрешении, ознакомьтесь с технической записью Apple TN2265 . В разделе «Сброс предупреждений о разрешении Push Push-уведомлений на iOS» они объясняют, как сбросить настройки на iOS. Однако многие разработчики жалуются, что процедура не работает. Не уверен, что эта ссылка будет работать, вам нужно будет иметь доступ к форуму Apple, но это один из вопросов об этой точной проблеме.

Я сам думал, может ли Apple удалить диалоговое окно разрешения в iOS 5.1. Иначе зачем им требовать, чтобы приложение показывало предупреждение? Согласно рекомендациям по проверке AppStore :

5.3 Приложения, отправляющие Push-уведомления без предварительного получения согласия пользователя, будут отклонены

Например, Path (application) запрашивает у пользователя возможность выбора для push-уведомления в середине процесса поэтапного запуска, а не при первом запуске приложения.

Не знаете, какова должна быть цель подсказки, так как приложение не может запросить состояние настройки уведомления. В частности, приложение может проверять, какие типы уведомлений (с использованием enabledRemoteNotificationTypes ) включены, но НЕ, если push-уведомления для конкретного приложения включены или отключены (переключатель ON / OFF в центре уведомлений вверху). По крайней мере, это поведение в iOS 5.1. Даже если пользователь отключает уведомления для этого приложения, приложение все равно может регистрироваться для push-уведомлений (используя registerForRemoteNotificationTypes ) и получит маркер APNS.

Проверьте это, когда ваше приложение станет активным, а не просто при запуске.

Это пример, когда Push реализуется через UrbanAirship. Каждый раз, когда пользователь выбирает / отказывается для нажатия следующих огней делегата и с помощью метода ниже этого, вы можете проверить (ДА / НЕТ).

То же самое можно сделать с делегатом UIApplication, если не использовать UrbanAirship.

 - (void)registrationSucceededForChannelID:(NSString )channelID deviceToken:(NSString )deviceToken { NSLog(@"registrationSucceededForChannelID : %@",[self appRegisterForPushNotification][email protected]"YES":@"NO"); } - (BOOL)appRegisterForPushNotification { if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) { UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types]; return ((types & UIUserNotificationTypeAlert) || (types & UIUserNotificationTypeSound)); } return NO; } 
  • Не повторяющиеся случайные числа
  • Почему Objective-C не поддерживает частные методы?
  • NSNotificationCenter против делегирования (используя протоколы)?
  • Как подождать завершения асинхронного отправления?
  • Как определить глобальную переменную, доступ к которой можно получить в любом месте приложения?
  • Создайте экземпляр объекта object-c по имени?
  • Преобразование цели-c typedef в его эквивалент строки
  • Можно ли использовать «classic» malloc () / free () в приложениях Objective-C / iPhone?
  • Преобразовать десятичную дробную часть в Objective-C?
  • Что такое objc_setAssociatedObject () и в каких случаях его следует использовать?
  • @property сохранять, назначать, копировать, неатомически в Objective-C
  • Давайте будем гением компьютера.