美文网首页iOS开发
iOS 开发之Touch ID功能实现

iOS 开发之Touch ID功能实现

作者: Lxyang | 来源:发表于2017-11-22 16:30 被阅读73次

摘要

由于新项目马上启动,看了下需求文档,其中,可能会用到Touch ID或Face ID技术实现支付功能,于是,现做一些技术准备,把学习Touch ID方面的知识做个总结,待真正开发时,应用上去。


开发步骤
首先,touchId功能,用到了苹果自带的LocalAuthentication框架。具体开发步骤如下:

  • 判断手机是否支持TouchID功能。
    LAContext.init().canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error)
  • 判断验证指纹密码是否成功等
    LAContext.init().evaluatePolicy(policy: ***, localizedReason: ***, reply: ***)
    它有多个结果 ,如下:
let code = ((eror as NSError?)?.code as? Int32 ) ?? 0
      switch code {
            case kLAErrorSystemCancel:
                 print("系统取消授权,如其他APP切入")
            case kLAErrorUserCancel:
                 print("用户取消验证Touch ID")
            case kLAErrorAuthenticationFailed:
                 print("授权失败")
            case kLAErrorPasscodeNotSet:
                 print("系统未设置密码")
            case kLAErrorTouchIDNotAvailable:
                 print("设备Touch ID不可用,例如未打开")
            case kLAErrorTouchIDNotEnrolled:
                 print("设备Touch ID不可用,用户未录入")
            case kLAErrorUserFallback:
                 DispatchQueue.main.async {
                      print("用户选择输入密码,切换主线程处理")
                 }
           default:
                 DispatchQueue.main.async {
                     print("其他情况,切换主线程处理")
        }
   }

测试写的demo如下:
封封装成一个工具类

/// 指纹识别技术
import UIKit
import LocalAuthentication

class XYJTouchIDTool: NSObject {
    
    static let shareTool = LAContext.init()
    
    override init() {
        super.init()
    }
    
    ///
    func openTouchIdFunction() {
        var error: NSError?
        let version = UIDevice.current.systemVersion as NSString
        // iOS 8及以上版本执行-(void)authenticateUser方法,方法自动判断设备是否支持和开启Touch ID
        if version.doubleValue > 8.0 {
            // Evaluate: 评估,评价
            // policy: 政策,方法
            // 判断是否可以使用TouchID
            let canUseTouchID = XYJTouchIDTool.shareTool.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error)
            if canUseTouchID {
                print("你的设备开启了指纹验证功能");
                XYJTouchIDTool.shareTool.evaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, localizedReason: "这个一般用来描述请求用户提供指纹进行验证的文本提示内容,该内容提示用户为什么需要使用指纹验证的内容---如:利用他解锁(支付)", reply: { (result, eror) in
                    if result == true { // 判断验证是否成功
                        print("验证成功")
                    } else {
                        let code = ((eror as NSError?)?.code as? Int32 ) ?? 0
                        switch code {
                            case kLAErrorSystemCancel:
                                print("系统取消授权,如其他APP切入")
                            case kLAErrorUserCancel:
                                print("用户取消验证Touch ID")
                            case kLAErrorAuthenticationFailed:
                                print("授权失败")
                            case kLAErrorPasscodeNotSet:
                                print("系统未设置密码")
                            case kLAErrorTouchIDNotAvailable:
                                print("设备Touch ID不可用,例如未打开")
                            case kLAErrorTouchIDNotEnrolled:
                                print("设备Touch ID不可用,用户未录入")
                            case kLAErrorUserFallback:
                                DispatchQueue.main.async {
                                    print("用户选择输入密码,切换主线程处理")
                                }
                            default:
                                DispatchQueue.main.async {
                                    print("其他情况,切换主线程处理")
                                }
                        }
                    }
                })
                
            } else {
                print("不支持指纹识别")
            }
        }
        
    }
    
    
}

相关文章

  • iOS 开发之Touch ID功能实现

    摘要 由于新项目马上启动,看了下需求文档,其中,可能会用到Touch ID或Face ID技术实现支付功能,于是,...

  • iOS Touch ID

    iOS 8 SDK向开发者公开了Touch ID指纹识别功能,允许App对用户身份进行本地验证。使用Touch I...

  • app高大上的指纹识别登陆

    iOS 8 SDK向开发者公开了Touch ID指纹识别功能,允许App对用户身份进行本地验证。使用Touch I...

  • iOS Touch ID 开发

    Touch ID Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术。大家用得最...

  • ios开发实现画板功能

    ios开发实现画板功能 ios开发实现画板功能

  • iOS 8 SDK添加Touch ID指纹识别功能

    iOS 8 SDK向开发者公开了Touch ID指纹识别功能,允许App对用户身份进行本地验证。使用TouchID...

  • iOS Touch ID 开发教程

    一、Touch ID 简介 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,...

  • iOS Touch ID开发记录

    由于最近的项目中用到了Touch ID,这里就给大家介绍下用法 1)首先你需要导入LocalAuthenticat...

  • Touch ID

    使用iOS 8 SDK添加Touch ID指纹识别功能 - Puzhi的专栏 - 博客频道 - CS...

  • iOS开发之3D Touch功能实现

    3D Touch是一种立体触控技术,被苹果称为新一代多点触控技术,是在Apple Watch上采用的Force T...

网友评论

    本文标题:iOS 开发之Touch ID功能实现

    本文链接:https://www.haomeiwen.com/subject/cukfvxtx.html