TouchID 指纹识别是IPhone 5s设备新增的一项重大功能,用于数据加密和安全。而在IOS 8.0 以后也向第三方开放了相应功能API,我们可以利用这个API做相应的用户验证和登录的功能,省去输入密码的环节,提高登录的用户体验。
App集成TouchID的效果
TouchID API
API比较简单,在IOS 8 以上的app 包中,添加Libraries:LocalAuthentication Framework,有以下两个方法
canEvaluatePolicy
监测设备是否支持TouchID,返回BOOL,并且若不支持,则在error里面返回相应状态evaluatePolicy
TouchID验证状态,在block里面返回验证状态(BOOL)和error;
从官方API看出,仅仅提供TouchID的支持状态和验证状态(BOOL),并不提供关于本设备或本app任何可关联的信息,所以集成TouchID还需自行设计关联和流程,才能实现指纹登录的功能,否则只验证TouchID,对于需在app中登录账号,并没什么作用。
逻辑设计
设备绑定
在设备第一次使用指纹登录之前,必须先登录原有的账号(app注册账号),进行设备(用户)绑定。图1所示
- 开启:在app登录后,在“用户信息-安全”,点击开启“指纹登录”;
- 验证TouchID:检测当前设备是否支持TouchID,若支持则发起TouchID验证;
- 生成设备账号/密码:TouchID验证通过后,根据当前已登录的账号和硬件设备Token,生成设备账号/密码(规则可自定,密码要长要复杂),并保存在keychain;
- 绑定:生成设备账号/密码后,将原账号及设备账号/密码,加密后(题主使用的是RSA加密)发送到服务端进行绑定;
- 成功:验证原账号及设备账号有效后,返回相应状态,绑定成功则完成整个TouchID(设备)绑定流程。
设备(指纹)登陆
在设备(用户)绑定之后,并且用户账号退出后,可以使用指纹登录,若当前设备未绑定,则不会出现“指纹登录”按钮。图2所示
- TouchID登录:在用户登录界面,点击“指纹登录”;
- 验证TouchID:检测当前设备是否支持TouchID,若支持则发起TouchID验证;
- 登录:读取app在本机的设备账号/密码,调用设备登录接口,发起登录请求;
-
成功:验证设备账号/密码后,返回相应状态,登录成功则完成整个TouchID登录流程。
*在设备(用户)绑定之后,并且当前正处于登录状态,也可以将本设备取消绑定,流程基本与绑定流程雷同,不再重复。
小结
TouchID API 非常简单,仅仅对本设备的TouchID进行验证,但如果需要在app集成相应的 “设备登录/验证”功能或其他TouchID 的应用,则需自行设计关联和绑定流程(例如在本app中使用的关联:设备Token、生成设备账号/密码、app包名/版本),绑定之后,才能使用TouchID 进行验证和应用。