iOSで指紋認証をした時、AppDelegateのどのメソッドが呼ばれるかを調査しました。
指紋認証の方法は下記事を元にしました。
検証
アプリを作ったら、AppDelegateを以下のように修正します。
これで、指紋認証時にどのメソッドが呼ばれるかを検証できます。
import UIKit import LocalAuthentication @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { print(#function) DispatchQueue.main.asyncAfter(wallDeadline: .now() + 5.0, execute: { let context = LAContext() var error: NSError? if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) { context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "テスト") { success, error in } } }) return true } func applicationWillResignActive(_ application: UIApplication) { print(#function) } func applicationDidEnterBackground(_ application: UIApplication) { print(#function) } func applicationWillEnterForeground(_ application: UIApplication) { print(#function) } func applicationDidBecomeActive(_ application: UIApplication) { print(#function) } }
アプリを立ち上げると以下のログが出力されます。
application(_:didFinishLaunchingWithOptions:) applicationDidBecomeActive
指紋認証アラートが立ち上がる時は以下のログが出力されました。
applicationWillResignActive
認証 or キャンセルをすると以下のログが出力されます。
applicationDidBecomeActive
ちなみに「アプリをバックグラウンドに移動 → アプリ立ち上げ」の時は下のログが出力されます。
applicationWillResignActive applicationDidEnterBackground applicationWillEnterForeground applicationDidBecomeActive
まとめ
指紋認証の時は、以下のDelegateメソッドが呼ばれる。
applicationWillResignActive applicationDidBecomeActive
アプリをバックグラウンドに移動&立ち上げすると、以下のDelegateメソッドが呼ばれる。
applicationWillResignActive applicationDidEnterBackground applicationWillEnterForeground applicationDidBecomeActive