【Swift】フォア/ バックグラウンドを検知

どうも、ねこきち(@nekokichi1_yos2)です。

 

ユーザーがアプリ起動中に

  • ホーム画面
  • スリープ画面

とアプリ間を行き来してる時も、処理を継続させたい場合があります。

 

つまり、

  • フォアグラウンド(アプリ画面)
  • バックグラウンド(アプリ画面外)

における処理の実装ですが、容易に実現できます。

 

 

解説

 

Xcodeで新規プロジェクトに元からある、UISceneDelegate.swift、で行います。

 

フォアグラウンド

 

フォアグラウンドへの検知は、

func sceneWillEnterForeground(_ scene: UIScene) {
}
func sceneDidBecomeActive(_ scene: UIScene) {
}

 

sceneWillEnterForeground()は、アプリ画面に戻ってくる直前、

sceneDidBecomeActive()は、アプリ画面に戻ってきた直後、に通過します。

 

バックグラウンド

 

バックグラウンドへの検知は、

func sceneWillResignActive(_ scene: UIScene) {
}
func sceneDidEnterBackground(_ scene: UIScene) {
}

 

sceneWillResignActive()は、アプリ画面から離れる直前、

sceneDidEnterBackground()は、アプリ画面から離れた直後、に通過します。

 

結果

  

f:id:nekokichi_yos2:20200725204904g:plain

 

ソースコード

 

import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    func sceneDidBecomeActive(_ scene: UIScene) {
        print("sceneDidBecomeActive")
    }

    func sceneWillResignActive(_ scene: UIScene) {
        print("sceneWillResignActive")
    }

    func sceneWillEnterForeground(_ scene: UIScene) {
        print("sceneWillEnterForeground")
    }

    func sceneDidEnterBackground(_ scene: UIScene) {
        print("sceneDidEnterBackground")
    }

}