应用锁不是再做一套账号系统
“心晴手记”是一款本地优先的心情日记。它没有账号和服务器,但用户仍可能希望避免别人拿到已解锁的手机后直接看到记录。
这个需求适合使用系统设备认证,而不是让应用自行保存一套密码。
系统认证的优势是:
- 应用不接触用户的锁屏密码或生物特征模板;
- PIN、人脸和指纹使用统一接口;
- 认证 UI 与系统体验一致;
- 凭据由系统安全环境管理。
华为官方对 User Authentication Kit 的定位也包括设备解锁、敏感操作授权和隐私内容访问。
一、只声明真正需要的权限
模块配置中声明设备认证权限,并说明使用原因:
{
"requestPermissions": [
{
"name": "ohos.permission.ACCESS_BIOMETRIC",
"reason": "$string:biometric_permission_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
}
]
}
对应文案应直接告诉用户触发条件和用途,例如:
仅在用户开启应用锁后,用于保护本机日记记录。
不要写“为了提供更好的体验”这种无法解释权限必要性的泛化文案。
当前项目不声明网络、位置、相机、麦克风、通讯录或泛存储权限。最小权限不仅有助于审核,也能让用户更容易理解应用的数据边界。
二、封装一个 Promise 风格的认证函数
业务页面不需要了解认证实例的全部细节,可以把结果收敛为 Promise<boolean>:
import {
userAuth } from '@kit.UserAuthenticationKit';
export function authenticate(title: string): Promise<boolean> {
return new Promise<boolean>((resolve) => {
try {
const authParam: userAuth.AuthParam = {
challenge: new Uint8Array([1, 2, 3


1195

被折叠的 条评论
为什么被折叠?



