Нужно объяснение о запросе разрешения на уведомления в iOS
Информация о "запросе разрешения"
Проблема в том, что они оба нужны в одном и том же коде, но они разбиты на 2 отдельные статьи. Так что неясно, как обращаться с ними одновременно и в чем разница между ними (конечно, кроме входных параметров).
Код, который я нашел, просто вызывает эти функции последовательно:
UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: { granted, error in
...
})
UIApplication.shared.registerForRemoteNotifications()
Это правильно? И в чем разница между этими методами?
PS Я тоже не могу просто поместить их внутрь application:didFinishLoad:
согласно документации, потому что приложение не должно запрашивать разрешения с самого первого запуска.
1 ответ
Это
UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: { granted, error in
... })
Спрашивает пользователя, принимает ли он уведомление о получении, которое фактически показывает всплывающее окно, но это (используется для push-уведомлений, а не локальных)
UIApplication.shared.registerForRemoteNotifications()
Согласно Документам
Вызовите этот метод, чтобы начать процесс регистрации с помощью службы Apple Push Notification. Если регистрация прошла успешно, приложение вызывает приложение объекта делегата приложения: didRegisterForRemoteNotificationsWithDeviceToken: метод и передает ему маркер устройства.
//
if #available(iOS 10.0, *) {
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()