В моем приложении я в настройках приложения включаю / отключаю уведомления pu sh. Я столкнулся со случаем, когда пользователь не разрешает уведомления при запуске приложения, а затем включает его с помощью настроек в приложении, тогда статус авторизации всегда отклоняется.
Вот мой код для уведомления pu sh в делегате приложения.
Я вызвал метод registerForPushNotifications в didFinishLaunching.
// MARK: Register app for push notificaitons
func registerForPushNotifications() {
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) {
[weak self] granted, error in
printLogs("Permission granted: \(granted)")
// guard granted else { return }
if error == nil {
self?.getNotificationSettings()
}
}
}
func getNotificationSettings() {
UNUserNotificationCenter.current().getNotificationSettings { settings in
printLogs("Notification settings: \(settings)")
switch settings.authorizationStatus {
case .authorized:
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
case .denied:
printLogs("Notifications Denied")
case .notDetermined:
printLogs("Notifications not determined")
default:
break
}
}
}
и для включения уведомлений из настроек, которыми я пользуюсь код
AppDelegate.shared.registerForRemoteNotifications()