Подтвердить что ты не робот

Локальные уведомления нуждаются в разрешении пользователя на iOS?

Я использую UILocalNotification в своем приложении для расписания уведомлений. Уведомления работают нормально и появляются, когда я хочу их. У меня нет проблемы с этим. Я НЕ делаю никаких удаленных/push-уведомлений.

Что меня заинтересует, так это то, что я никогда не видел широко известный диалог разрешений, который вы обычно видите для push-уведомлений в нескольких приложениях. Я даже reset мое устройство и запускал мое приложение. Это все еще не вызвало появление диалогового окна разрешения.

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

Я знаю, что смогу реализовать свой собственный диалог после того, как приложение запустилось, и попросило пользователя получить это разрешение, но я надеялся, что Apple позаботится об этом, тем более, что он относится к удаленным и локальным уведомлениям в приложении "Настройки".

4b9b3361

Ответ 1

ПРИМЕЧАНИЕ. Это включает в себя push-уведомления/удаленные уведомления

при использовании Xcode6 с iOS7 или iOS8 Тест, когда registerUserNotificationSettings: API доступен во время выполнения.

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {  
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];  
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];  
    [[UIApplication sharedApplication] registerForRemoteNotifications];  
} else {  
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];  
}  

Благодаря http://corinnekrych.blogspot.ae/2014/07/how-to-support-push-notification-for.html

Ответ 2

Да, в iOS8 для локальных уведомлений требуются разрешения.

Документация для registerUserNotificationSettings: предусматривает, что

If your app displays alerts, play sounds, or badges its icon while in the background, you must call this method during your launch cycle to request permission to alert the user in those ways. Typically, you make this request , если ваше приложение использует локальные or push уведомления to alert the user to new information involving your app.

It is recommended that you вызовите этот метод, прежде чем планировать какие-либо локальные уведомления or register with the push notification service.

Ответ 3

Похоже, что локальные уведомления не нуждаются в каких-либо разрешениях пользователя. Диалоговое окно "Разрешение" отображается только для Push-уведомлений. Я могу запланировать/отменить локальные уведомления без разрешения пользователя.

Ответ 4

Да, это правильно. Локальные уведомления не требуют каких-либо разрешений ОС. Однако, как хорошая практика, я предлагаю предоставить опцию выбора для пользователя в таких случаях из вашего приложения. Это будет хорошо работать двумя способами:

  • Досадный пользователь, разочаровавшись из-за отсутствия локального уведомления, снова и снова, не зная разницу между Push/Local уведомлением, может оставить плохой обзор в хранилище приложений.
  • Всегда хорошая практика предоставления флагов для включения/выключения таких функций для данного пользователя.

Ответ 5

Документация Apple для presentLocalNotificationNow и scheduleLocalNotification говорит,

Перед планированием любых локальных уведомлений вы должны вызвать метод registerUserNotificationSettings:, чтобы система узнала, какие типы предупреждений, если таковые имеются, вы планируете отображать для пользователя.

Поэтому я не уверен, как другие на этой странице говорят, что для локальных уведомлений не требуются разрешения пользователя.

Оформить эту вторую дискуссию по той же теме:

Запросить разрешение пользователя на получение UILocalNotifications в iOS 8