UrbanAirship iOS SDK - существует ли обратный вызов запроса разрешения уведомлений? - PullRequest
0 голосов
/ 26 марта 2019

Во время процесса регистрации моего приложения у меня есть страница, спрашивающая пользователя, хотят ли они разрешить уведомления об уведомлениях (через UrbanAirship).

Когда пользователь нажимает "Don't Allow" или "Allow" в последующемСгенерировано SDK UIAlert Я хотел бы выполнить некоторые действия.В этом случае переход к следующей странице входящего потока, когда пользователь нажимает одну из двух кнопок оповещения.Кроме того, в случае "Allow" обновите переменную в локальном хранилище, чтобы указать, что пользователь ранее дал разрешение на push-уведомления.

В идеале я хотел бы иметь возможность реализовать закрытие / обратный вызов для каждогоиз этих нажатий кнопок, но я не смог выяснить, как это сделать из UrbanAirship документов.

В настоящее время у меня есть следующее:

@IBAction func permissionsButtonPressed(_ sender: Any) {
        UAirship.push().userPushNotificationsEnabled = true
        UAirship.push().defaultPresentationOptions = [.alert, .badge, .sound]
        UAirship.push().resetBadge()
        UAirship.push().isAutobadgeEnabled = true

        //Update a variable in local storage
        // ...

        performSegue(withIdentifier: "exampleIdentifier", sender: self)
}

Но это имеетпроблема создания перехода страницы и , а затем представления уведомления об уведомлении в верхней части следующей страницы во входящем потоке.

Самая близкая вещь к решению, которое я нашел в UrbanAirship docs + forums - это этот вопрос форума от 2017 года , но это только кажется возможным решением "закрытия" для случая нажатия кнопки "allow" (через didRegisterForRemoteNotifications), тогда как я все еще хочубыть в состоянии продвинуть моих пользователей через вход, даже если они отказывают в разрешениях уведомлений.

В идеале, я хотел бы иметь возможность реализовать замыкания завершения, подобныечто возможно со стандартным UIAlertController, например:

func setupPermissionsAlert() {
    let alert = UIAlertController(title: "This App Would Like to Send You Notifications", message: "An Interesting and Informative Message", preferredStyle: UIAlertController.Style.alert)
    alert.addAction(UIAlertAction(title: "Don't Allow", style: UIAlertAction.Style.default, handler: { [unowned self] action in
        //Some action
        self.notAllowedCompletion()
    }))
    alert.addAction(UIAlertAction(title: "Allow", style: UIAlertAction.Style.default, handler: { [unowned self] action in
        //Another action
       self.allowedCompletion()
    }))

    //N.B. topMostViewController() is a custom method to locate the topMostViewController presented
    UIApplication.shared.topMostViewController()?.present(alert, animated: true, completion: nil)
}

Мой вопрос, поэтому, возможно ли это с UrbanAirship для ОБА разрешение выдано и отклонены результаты из SDK представлены предупреждения?Если да, то как мне это сделать?

1 Ответ

1 голос
/ 14 мая 2019

Вы можете использовать enableUserPushNotifications :

UAirship.push().enableUserPushNotifications({ (result) in
  // handle result
})

Это приведет к тому, что система запросит разрешение и даст вам результат true, если уведомления включены, в противном случае false.

...