しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

【Swif】指紋認証時のUIApplicationDelegateメソッドに関する検証

iOS指紋認証をした時、AppDelegateのどのメソッドが呼ばれるかを調査しました。
指紋認証の方法は下記事を元にしました。

llcc.hatenablog.com

検証

アプリを作ったら、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

f:id:llcc:20170706231057p:plain

認証 or キャンセルをすると以下のログが出力されます。

applicationDidBecomeActive

ちなみに「アプリをバックグラウンドに移動 → アプリ立ち上げ」の時は下のログが出力されます。

applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive

まとめ

指紋認証の時は、以下のDelegateメソッドが呼ばれる。

applicationWillResignActive
applicationDidBecomeActive

アプリをバックグラウンドに移動&立ち上げすると、以下のDelegateメソッドが呼ばれる。

applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive