【通知】任意のタイミングで呼出!

iOSアプリ開発

「アプリの終了時に自動保存したい!」
「他のアプリから戻った時に、パスワード画面を表示したい!」

などなど、然るべきタイミングで処理を実行させたいときがあると思います。

そんな時に使えるのが「NotificationCenter」です。

「NotificationCenter」の簡単な使い方

「NotificationCenter」の簡単な使い方について説明します。

通知を登録!

まず、こちらが「登録」のためのソースコード。

let center = NotificationCenter.default
center.addObserver(self,
selector: #selector(メソッド名),
name: .UIApplicationWillTerminate,
object: nil)

「NotificationCenter」を利用して通知を受け取るためには、あらかじめ上記のメソッドを実行し「登録」しておくことが必要です。ViewDidLoadなどに書いておきましょう。

メソッド名の部分には「testMethod」などのようにメソッド名のみ記述するようにします。かっこは必要ありません。

name: .UIApplicationWillTerminate,

この部分を変更することで、通知タイミングを変更することができます。ちなみに上記の例「UIApplicationWillTerminate」は「アプリが終了時に通知する」というものです。

name: .UIApplicationDidEnterBackground,

↑「アプリがバッググラウンドになったら通知する」

name: .UIApplicationWillEnterForeground,

↑「アプリがフォアグラウンドになったら通知する」

UIApplicationDidBecomeActive - NSNotification.Name | Apple Developer Documentation

公式サイトに通知タイミング一覧が記載されているので、必要に応じて選択しましょう!(リファレンスの反映が遅れているのか、たまに古い名前のままのがありますけど)

通知を解除!

登録した通知は、使わなくなったタイミングで解除することができます。
iOS 9.0以降、解除は任意になりました。必要な場合のみ実装しましょう。
(例:はじめの1回だけ通知し、それ以降は通知したくない場合などです。)

center.removeObserver(self,
name: .UIApplicationWillTerminate,
object: nil)

「NotificationCenter」よりもさらに簡単な「AppDelegate.swift」の5つのメソッド

下記の5つの通知については「AppDelegate.swift」にてあらかじめ用意されています。

func applicationWillResignActive(_ application: UIApplication) {
// アプリがバックグラウンドになる直前
}

func applicationDidEnterBackground(_ application: UIApplication) {
// アプリがバックグラウンドになった瞬間
}

func applicationWillEnterForeground(_ application: UIApplication) {
// アプリがバックグラウンドから戻った瞬間
}

func applicationDidBecomeActive(_ application: UIApplication) {
// アプリがアクティブになった瞬間
}

func applicationWillTerminate(_ application: UIApplication) {
// アプリ終了時
}

複雑でない処理ならば、「AppDelegate.swift」のメソッドに直接記述してしまってもいいかもしれません。


Category
9WEB