iOSアプリでTouchIDを使う方法

Blog

 

今回、紹介するのは、TouchIDの使い方を紹介をします。

TouchIDは指紋認証でログインするときに使います。

 

 

環境

  • Swift4
  • Xcode9
  • LocalAuthentication

Info.plistファイルに追加

  • Info.plistに「NSFaceIDUsageDescription」を追加する。

 

 

UI

  1. Labelを配置。
  2. Buttonを配置。「Touch ID」に変更。

 

 

コネクト

 

  1. LabelをOutlet接続。Name:「label」。
  2. ButtonをAction接続。Name:「touchID」。

 

 

 

 

 

コーディング

 

  1. ViewController.swiftにコードを追加。

 

import LocalAuthentication  //追加
 //ここから
    
    @IBAction func touchID(_ sender: Any) {
        
        let myContext = LAContext()
        self.configure(context: myContext)
        let reason = "Only device owner can use this feature."
        
        var authError: NSError? = nil
        
        if myContext.canEvaluatePolicy(.deviceOwnerAuthentication, error: &authError) {
            
            myContext.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: reason) { (success, evaluateError) in
                if success {
                    print("Success")
                    
                    DispatchQueue.main.async {
                        self.label.text = "Success"
                    }
                } else {
                    let error = evaluateError! as NSError
                    let errorMessage = "\(error.code): \(error.localizedDescription)"
                    
                    print(errorMessage)
                    
                    DispatchQueue.main.async {
                        self.label.text = errorMessage
                    }
                }
            }
        } else {
            
            let errorMessage = "\(authError!.code): \(authError!.localizedDescription)"
            print(errorMessage)
            
            DispatchQueue.main.async {
                self.label.text = errorMessage
            }
        }
    }
    
    
    private func configure(context: LAContext) {
        context.localizedCancelTitle = "キャンセル"
        context.localizedFallbackTitle = "パスコードを入力"
    }
    
//    ここまで追加

 

 

全コード

 

import UIKit
import LocalAuthentication  //追加

class ViewController: UIViewController {
    
    
    
    @IBOutlet weak var label: UILabel!
    

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    
    //ここから
    
    @IBAction func touchID(_ sender: Any) {
        
        let myContext = LAContext()
        self.configure(context: myContext)
        let reason = "Only device owner can use this feature."
        
        var authError: NSError? = nil
        
        if myContext.canEvaluatePolicy(.deviceOwnerAuthentication, error: &authError) {
            
            myContext.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: reason) { (success, evaluateError) in
                if success {
                    print("Success")
                    
                    DispatchQueue.main.async {
                        self.label.text = "Success"
                    }
                } else {
                    let error = evaluateError! as NSError
                    let errorMessage = "\(error.code): \(error.localizedDescription)"
                    
                    print(errorMessage)
                    
                    DispatchQueue.main.async {
                        self.label.text = errorMessage
                    }
                }
            }
        } else {
            
            let errorMessage = "\(authError!.code): \(authError!.localizedDescription)"
            print(errorMessage)
            
            DispatchQueue.main.async {
                self.label.text = errorMessage
            }
        }
    }
    
    
    private func configure(context: LAContext) {
        context.localizedCancelTitle = "キャンセル"
        context.localizedFallbackTitle = "パスコードを入力"
    }
    
//    ここまで追加
    

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

 

 

実行結果

 

 

 

 

実行は実機でする方がいいと思うので実機でやって指紋認証をしてみてください。

 

以上で「iOSアプリでTouchIDを使う方法」の説明を終わります。

 

🤗

 

コメント