iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

iOSアプリがフォアグラウンドかバックグラウンドかを判定する方法【Swift】

iOSアプリのフォアグラウンド/バックグラウンド状態を検出する方法

iOSアプリケーションが現在フォアグラウンドで動作しているのか、それともバックグラウンドに移行しているのかを判定したい場合、UIApplicationクラスを利用するのが最もシンプルな方法です。UIApplicationは、バッテリー残量や端末の各種ステータスの取得など、多くのシステム情報へのアクセスにも使える便利なクラスです。

applicationStateプロパティの基本

アプリケーションの状態は、UIApplication.sharedが保持する共有リソースから取得できます。以下のように記述するだけで、現在のアプリの状態を確認できます。

print(UIApplication.shared.applicationState)

applicationStateはState型の列挙体(enum)で、Appleの公式ドキュメントによると以下の3つのケースで構成されています。

public enum State : Int {
    case active
    case inactive
    case background
}

各ケースの意味

  • active: アプリがフォアグラウンドで動作しており、タッチイベントをはじめとする各種イベントを受け付けている状態。
  • inactive: アプリはフォアグラウンドで実行中だが、イベントを受信していない状態(着信画面の表示中やコントロールセンターを開いた瞬間などが該当)。
  • background: アプリがバックグラウンドで動作している状態。

条件分岐での活用例

これらの状態は、アプリの要件に応じて柔軟に活用できます。たとえば、状態ごとに異なる処理を実行したい場合は、次のように条件分岐を組み合わせます。

let state = UIApplication.shared.applicationState
if state == .active {
    print("I'm active")
}
else if state == .inactive {
    print("I'm inactive")
}
else if state == .background {
    print("I'm in background")
}

このコードをアプリのviewDidLoad内で実行すると、以下のような結果が出力されます。

iOSアプリがフォアグラウンドかバックグラウンドかを判定する方法【Swift】

状態の変化をリアルタイムに検知するには

applicationStateは参照した瞬間の状態を返すだけなので、「状態が切り替わったタイミング」を捉えたい場合はNotificationCenterの通知を利用するのが定番です。

NotificationCenter.default.addObserver(
    self,
    selector: #selector(appDidBecomeActive),
    name: UIApplication.didBecomeActiveNotification,
    object: nil)

NotificationCenter.default.addObserver(
    self,
    selector: #selector(appDidEnterBackground),
    name: UIApplication.didEnterBackgroundNotification,
    object: nil)

didBecomeActiveNotificationはアプリがアクティブになった瞬間に、didEnterBackgroundNotificationはバックグラウンドへ移行した瞬間にそれぞれ発火します。これらを組み合わせれば、位置情報更新やタイマーなど常駐処理の一時停止・再開を適切に制御でき、より堅牢なライフサイクル管理が実現できます。

  1. PCでiOSアプリを実行する方法|おすすめiOSエミュレーター10選

    iPhoneは性能が高い一方で価格も高く、「手が出せない」と感じている方は少なくありません。iPhoneには魅力的なアプリが数多くありますが、本体を持っていなければその魅力を味わえないのが現状です。しかし、実はPCに「iOSエミュレーター」を導入すれば、iPhoneを購入しなくてもiOSアプリを体験できるのです。エミュレーターを使えば、大きめの画面でiOSアプリを操作でき、多くのツールが無料で利用可能です。この記事では、PCでiOSアプリを動かすためのおすすめエミュレーターを厳選してご紹介します。各ツールのダウンロードリンクも記載しているので、自分に合ったものを見つけてぜひ試してみてください。

  2. Windowsタスクスケジューラでタスクをバックグラウンド(非表示)またはフォアグラウンドで実行する方法

    Windowsでは、タスクスケジューラを利用して、特定のアプリケーションやバッチファイルをバックグラウンド(非表示)またはフォアグラウンド(画面に表示)で実行したいケースがあります。本記事では、Windowsのスケジュールされたタスクをバックグラウンドまたはフォアグラウンドで実行するように設定する手順を、ステップバイステップでわかりやすく解説します。 タスクをバックグラウンドで実行する設定方法 スケジュールされたタスクの実行方式(表示/非表示)は、タスクのプロパティにある「全般」タブで設定できます。 基本の手順 1. 新しくタスクを作成した場合、デフォルトでは「ユーザーがログオンしているときの