在我的应用程序中,我在应用程序设置中启用/禁用推送通知。我遇到了这样一种情况,如果用户在应用程序启动时不允许通知,然后使用应用程序中的设置启用它,那么授权状态总是被拒绝。
这是我在应用程序委托中推送通知的代码。
我在 didFinishLaunching 中调用了 registerForPushNotifications 方法。
// 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()