今回は、iOS アプリをバックグラウンド、もしくはフォアグラウンドに移動した時に、それをアプリから検知する方法についてです。
参考にさせていただいた記事はこちらから。
【Xcode/Swift】バックグランド・フォアグラウンド状態を検知・判定する方法 | iOS-Docs
https://ios-docs.dev/backgournd-foreground/
SceneDelegate.swift
に記述する方法と、NotificationCenter
を使って ViewController.swift
に記述する方法があったのですが、今回はアプリの仕様上、ViewController
に記述する方法で実装しました。
実装方法ですが、まず、ViewController.swift
の ViewDidLoad()
に下記のコードを追加します。
NotificationCenter.default.addObserver(self, selector: #selector(foreground(notification:)), name: UIApplication.willEnterForegroundNotification, object: nil ) NotificationCenter.default.addObserver(self, selector: #selector(background(notification:)), name: UIApplication.didEnterBackgroundNotification, object: nil )
次に、下記の関数を追加します。
@objc func foreground(notification: Notification) { print("アプリがフォアグラウンドに移動しました") } @objc func background(notification: Notification) { print("アプリがバックグラウンドに移動しました") }
アプリがフォアグラウンドになったタイミングで foreground()
が呼ばれ、バックグラウンドなったタイミングで background()
が呼ばれるので、あとはそれぞれに任意の処理を追加してください。
追加するコードは以上です。
実際に Simulator でアプリを実行し、バックグラウンド・フォアグラウンドに移動させたところ、問題なく動作しました!
初めて実装した機能でしたが、思ったよりも簡単でしたね。
以上、Swift でアプリがバックグラウンド・フォアグラウンドに移動したことを検知する方法についてでした。
ご参考になれば幸いです。