Как включить уведомление pu sh из настроек приложения в iOS Swift 5? - PullRequest
0 голосов
/ 21 апреля 2020

В моем приложении я в настройках приложения включаю / отключаю уведомления 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()

1 Ответ

1 голос
/ 21 апреля 2020

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

if let bundle = Bundle.main.bundleIdentifier,
    let settings = URL(string: UIApplication.openSettingsURLString + bundle) {
    if UIApplication.shared.canOpenURL(settings) {
        UIApplication.shared.open(settings)
    }
}

После включения из приложения настроек статус больше не будет denied.

...