如果你进阶的路上缺乏方向,可以加入我们的圈子和安卓开发者们一起学习交流!
-
Android进阶学习全套手册
-
Android对标阿里P7学习视频
-
BATJ大厂Android高频面试题
最后,借用我最喜欢的乔布斯语录,作为本文的结尾:
人这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦。
你的时间有限,所以不要为别人而活。不要被教条所限,不要活在别人的观念里。不要让别人的意见左右自己内心的声音。
最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实想法,其他一切都是次要。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
△ 图 1: 未使用生物识别的授权流程
然而,图 1 这种授权方式有一些弊端:
-
如果对于每次独立的会话都需要进行验证 (比如银行类的应用),那么这套流程会让用户感到非常繁琐,因为每次打开应用都需要输入一遍密码;
-
如果验证发生在应用首次安装后打开时 (比如邮件类应用),那么拥有该设备的任何人都可以查看设备所有者的隐私内容,因为应用无法验证当前使用者是否为设备所有者本人。
为了弥补这些弊端,我们引入了生物识别身份验证的方式,为终端用户的身份验证流程提供了诸多便利。不仅如此,这套技术对开发者也更具吸引力,即使业务逻辑可能不需要用户频繁登录。使用生物识别身份验证带来的最关键的好处在于,整个认证过程十分简短,只需要轻按一下传感器或是看一眼设备就完成了。而作为开发者,您要确定您的用户必须要进行重新认证的频率,是一天一次,一周一次还是每次打开应用都需要重新认证。总而言之,我们提供的 API 封装了许多功能,使开发者及其用户获得更加友好方便的登录体验。
如今,许多处理个人数据的应用 (例如邮件或社交应用) 在安装后往往只需要进行一次性身份验证。这种做法普及起来,是因为每次打开应用都需要输入用户名和密码的方式对用户体验造成了不良影响。但若是使用了生物识别技术,用户便不再担心安全性的缺失。即使您的应用还是使用一次性的身份验证,也可以考虑定期进行生物特征识别,以验证是否为同一用户。验证周期的长短完全取决于开发者的设定。
-
如果应用要求每次独立会话都需要进行验证 (或者是某些较为频繁的认证频率,例如每 2 小时一次或者每天一次等等),那么相比每次都手动输入密码进行验证的话,看一眼设备或轻按一下传感器这种方式就只是一种微不足道的操作。
-
如果应用仅需在安装后进行一次性验证 (例如邮件类应用),那么添加生物识别功能的代价只是让用户多了一个拿起设备然后看一眼的操作,但却额外提供了更加安全的保障。
-
如果用户希望无需额外进行验证,仍能够保持邮件的打开状态,那么应该提供选项允许这种行为。
对于想获得更多隐私保护的用户,生物识别功能能够提供额外的安心保障。无论哪种方式,同增加的收益相比,用户所付出的成本微乎其微。
使用 BiometricPrompt API 实现生物识别功能
通过 BiometricPrompt API,您可以在加密和不加密的情况下实现身份验证。如果您的应用需要更强安全性的保障 (例如医疗类或银行类应用),则可能需要 将加密密钥同生物特征绑定在一起 来验证用户的身份。否则您仅需向用户提供生物识别身份验证即可。两种方式的代码实现很类似,除了在需要加密时要用到 CryptoObject
实例。
加密版本:
biometricPrompt.authenticate(promptInfo, BiometricPrompt.CryptoObject(cipher))
复制代码
在上述代码中,我们向 CryptoObject 传递了 Cipher
参数,除此之外也支持其余加密对象,比如使用 Mac 或 Signature。
不使用 CryptoObject 的版本:
biometricPrompt.authenticate(promptInfo)
复制代码
若要在 Android 应用中实现生物识别身份验证,请使用 AndroidX Biometric
代码库。虽然 API 可以自动处理不同的认证级别 (指纹、面部识别、虹膜识别等),但您仍然可以通过 setAllowedAuthenticators()
方法设置应用可以接受的生物认证级别,具体如下面的代码所示。Class 3 (以前被称为 Strong) 级别代表您希望使用生物识别来解锁存储在 Keystore 中的凭证;Class 2 (以前被称为 Weak) 级别代表您只需要使用生物识别来解锁应用,而不依赖于加密技术保护的凭证进一步进行身份验证。还有一个 Class 1 级别,但此级别在应用中并不可用。更多详情,请查看 Android 兼容性定义文档。
fun createPromptInfo(activity: AppCompatActivity): BiometricPrompt.PromptInfo =
BiometricPrompt.PromptInfo.Builder().apply {
setAllowedAuthenticators(BIOMETRIC_STRONG)
// 继续设置其他 PromptInfo 属性,如标题、副标题、描述等。
}.build()
复制代码
最后
跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!