LoginSignup
28
28

More than 5 years have passed since last update.

SwiftでAppleのTouch IDを使う方法

Posted at

iOS8から導入されたLocalAuthenticationを使ってTouchID(指紋認証)でセキュリティを設定する方法をメモ

LocalAuthenticationを追加


import LocalAuthentication

Touch IDに対応している端末かどうかをチェック


let context = LAContext()
var error :NSError?
if context.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &error){}

Touch ID認証時の分岐処理


let localizedReason = "認証する理由を入力"
context.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: localizedReason, reply: {
                success, error in

                if success {
                    NSLog("認証成功")

                } else {
                    switch error.code {
                    case LAError.AuthenticationFailed.rawValue:
                        NSLog("認証失敗")
                    case LAError.UserCancel.rawValue:
                        NSLog("キャンセル")
                    case LAError.UserFallback.rawValue:
                        NSLog("パスコードを入力を選択")
                    case LAError.PasscodeNotSet.rawValue:
                        NSLog("パスコードが設定されていない")
                    case LAError.SystemCancel.rawValue:
                        NSLog("システムによってキャンセルされた")
                    default:
                        NSLog("不明なエラー")
                        return
                    }
                }
            })

コード



import UIKit
import LocalAuthentication

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func TouchIdButtomPressed(sender: AnyObject) {

        let context = LAContext()
        var error :NSError?
        let localizedReason = "認証する理由を入力"

        if context.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &error){

            //TocuhIDに対応している場合
            context.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: localizedReason, reply: {
                success, error in

                if success {
                    NSLog("認証成功")

                } else {
                    switch error.code {
                    case LAError.AuthenticationFailed.rawValue:
                        NSLog("認証失敗")
                    case LAError.UserCancel.rawValue:
                        NSLog("キャンセル")
                    case LAError.UserFallback.rawValue:
                        NSLog("パスコードを入力を選択")
                    case LAError.PasscodeNotSet.rawValue:
                        NSLog("パスコードが設定されていない")
                    case LAError.SystemCancel.rawValue:
                        NSLog("システムによってキャンセルされた")
                    default:
                        NSLog("不明なエラー")
                        return
                    }
                }
            })

        }else{
            //TocuhIDに対応していない場合
            NSLog("TourchIDに対応してない")
        }

    }

}


結果

IMG_0496.png

TouchIDが利用可能なアプリ

他にもTouchIDに対応しているアプリがあれば教えて下さいー。

28
28
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
28