如何在 iOS Swift 5 中启用来自应用程序设置的推送通知?
How to enable push notification from app settings in iOS Swift 5?
在我的应用程序中,我有 enabling/disabling 推送通知的应用程序设置。
我 运行 遇到这样一种情况,如果用户在应用程序启动时不允许通知,然后使用应用程序中的设置启用它,则授权状态始终被拒绝。
这是我在应用程序委托中推送通知的代码。
我在 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()
一旦用户拒绝了推送通知的权限,他必须在设置应用程序中启用它们才能获得推送通知。因此,在您的设置屏幕上,当用户点击启用通知选项时,只需将他带到您应用的通知设置屏幕。他可以从那里启用它。使用这段代码打开设置应用程序。
if let bundle = Bundle.main.bundleIdentifier,
let settings = URL(string: UIApplication.openSettingsURLString + bundle) {
if UIApplication.shared.canOpenURL(settings) {
UIApplication.shared.open(settings)
}
}
在设置应用中启用后,状态将不再是 denied
。
在我的应用程序中,我有 enabling/disabling 推送通知的应用程序设置。 我 运行 遇到这样一种情况,如果用户在应用程序启动时不允许通知,然后使用应用程序中的设置启用它,则授权状态始终被拒绝。
这是我在应用程序委托中推送通知的代码。
我在 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()
一旦用户拒绝了推送通知的权限,他必须在设置应用程序中启用它们才能获得推送通知。因此,在您的设置屏幕上,当用户点击启用通知选项时,只需将他带到您应用的通知设置屏幕。他可以从那里启用它。使用这段代码打开设置应用程序。
if let bundle = Bundle.main.bundleIdentifier,
let settings = URL(string: UIApplication.openSettingsURLString + bundle) {
if UIApplication.shared.canOpenURL(settings) {
UIApplication.shared.open(settings)
}
}
在设置应用中启用后,状态将不再是 denied
。