手动为应用程序迅速发送通知消息

时间:2019-08-05 15:00:29

标签: ios swift notifications

从设置手动更改设备通知时如何通知消息 。通知更改,应用程序内部将调用什么方法,以了解通知已更改

override func awakeFromNib() {
    super.awakeFromNib()

    let center = UNUserNotificationCenter.current()
    center.getNotificationSettings { (settings) in

        if(settings.authorizationStatus == .authorized)
        {
            print(" authorized")
            DispatchQueue.main.async {
                self.onOffSwitch.isOn = true
            }
        }
        else
        {
            print(" not authorized")
            DispatchQueue.main.async {
            self.onOffSwitch.isOn = false
            }
        }
    }

我在SettingViewcontroller内部获得了tableview,自定义我的单元格,并在其中添加了swift onOffSwift。 用户根据该设置手动更改设置中的通知,我希望我的应用程序相应地进行同步。

SettingViewController

       override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            tbl_SettingView.reloadData()
        }

我希望这对我有用吗?但不是

当用户更改那里的设置时,如何处理来自设置屏幕的通知应反映在移动应用屏幕上。

3 个答案:

答案 0 :(得分:1)

更改设置后,您的应用不会收到自动通知。但是用户只能在“设置”应用中进行此更改,因此您可以在应用回到前台时检查设置。

您的原因

   override func viewWillAppear(_ animated: Bool) {

无济于事,当应用回到前台时,不会调用viewWillAppear

答案 1 :(得分:0)

也许有更好的方法,但是我知道的是这样:

  1. 将Settings.authorizationStatus存储为单例类中的值或UserDefaults中的条目

  2. 只要应用程序激活,就将新值与存储的值进行比较。如果它们与您知道的设置不同,那么它们将被更改

答案 2 :(得分:0)

我相信您希望在应用进入前台而不是在调用 viewWillAppear 时获得更新的设置。只需将观察者添加到您的 viewDidLoad()(不要忘记在完成控制器后将其删除):

NotificationCenter.default.addObserver(forName: UIApplication.willEnterForegroundNotification, object: nil, queue: nil) { _ in
    UNUserNotificationCenter.current().getNotificationSettings(completionHandler: { settings in
        DispatchQueue.main.async {
            // update your view with current settings.authorizationStatus
        }
    })
}