lithium
lithium

Reputation: 1302

How to check that user is back from Settings

I am sending local notifications to my users, and I want to show the relevant title on the notification settings button.

If local notifications are off, this title should be "Notifications: off", and if local notifications are on, this title should be something like "Preferences".

Right now I'm checking this in viewDidLoad and viewDidAppear, and it works.

if UIApplication.sharedApplication().currentUserNotificationSettings()?.types.rawValue == 0 {
    //the first title
} else {
    //the second title
}

Except one case. If my user is changing notifications in the phone settings from "on" to "off" or vice versa, and after that he is back — the title is not changing (because this viewController already loaded and did appear).

How could I check that user is back from the Settings?

Upvotes: 5

Views: 1463

Answers (2)

Swift 5.5:

NotificationCenter.default.addObserver(
    self,
    selector: #selector(yourFunction),
    name: UIApplication.willEnterForegroundNotification,
    object: UIApplication.shared
)

And:

deinit {
    NotificationCenter.default.removeObserver(self)
}

Upvotes: 0

Tj3n
Tj3n

Reputation: 9943

You can observe this notification when your app is come to foreground from inactive, the selector will be called everytime your app is opened again from background:

Put in viewDidLoad:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.reloadData), name: UIApplicationWillEnterForegroundNotification, object: UIApplication.sharedApplication())

Put in viewDidDissapear or deinit:

NSNotificationCenter.defaultCenter().removeObserver(self)

Upvotes: 4

Related Questions