本地认证

LocalAuth API 是一个 iOS 本地认证框架的封装,用于在 Scripting 应用的脚本中启用生物识别或密码认证。本文档介绍了如何高效使用 LocalAuth API。

概览

LocalAuth 模块提供了检查认证可用性和执行用户认证的方法和属性。它支持的生物识别包括 Face ID、Touch ID 和 Optic ID,并提供密码作为备选方案。


属性

LocalAuth.isAvailable

  • 类型: boolean
  • 描述: 表示是否可以使用任何可用的认证策略进行认证。
  • 示例:
    1if (LocalAuth.isAvailable) {
    2  console.log("认证功能可用。")
    3} else {
    4  console.log("认证功能不可用。")
    5}

LocalAuth.isBiometricsAvailable

  • 类型: boolean
  • 描述: 表示是否可以使用生物识别认证。
  • 示例:
    1if (LocalAuth.isBiometricsAvailable) {
    2  console.log("生物识别认证可用。")
    3} else {
    4  console.log("生物识别认证不可用。")
    5}

LocalAuth.biometryType

  • 类型: LocalAuthBiometryType
  • 描述: 指定设备支持的生物识别认证类型。可能的值包括:
    • "faceID"
    • "touchID"
    • "opticID"
    • "none"
    • "unknown"
  • 示例:
    1const biometry = LocalAuth.biometryType
    2console.log(`生物识别类型:${biometry}`)

方法

LocalAuth.authenticate(reason: string, useBiometrics?: boolean): Promise<boolean>

  • 描述: 使用可用的生物识别或备选方法(如密码)对用户进行认证。返回一个 Promise,当认证成功时解析为 true,认证失败时解析为 false
  • 参数:
    • reason(string):向用户提示认证时显示的消息。此消息不能为空。例如:'请认证以访问 MyScript。'
    • useBiometrics(boolean,可选):默认值为 true。如果为 true,则方法使用生物识别认证;否则,允许使用生物识别或备选方法(如密码)。
  • 示例:
    1async function authenticateUser() {
    2  const reason = "请认证以访问 MyScript。"
    3  const result = await LocalAuth.authenticate(reason, true)
    4  if (result) {
    5    console.log("认证成功。")
    6  } else {
    7    console.log("认证失败。")
    8  }
    9}
    10
    11authenticateUser()

使用示例

检查生物识别可用性

1if (LocalAuth.isBiometricsAvailable) {
2  console.log("设备支持生物识别认证。")
3  console.log(`生物识别类型:${LocalAuth.biometryType}`)
4} else {
5  console.log("设备不支持生物识别认证。")
6}

使用生物识别认证

1async function accessSecureData() {
2  const authenticated = await LocalAuth.authenticate(
3    "请认证以访问安全数据。"
4  )
5  if (authenticated) {
6    console.log("访问已授权。")
7  } else {
8    console.log("访问被拒绝。")
9  }
10}
11
12accessSecureData()

回退到密码认证

1async function authenticateWithFallback() {
2  const authenticated = await LocalAuth.authenticate(
3    "请认证以继续。",
4    false // 允许生物识别或密码认证
5  )
6  console.log(authenticated ? "认证成功" : "认证失败")
7}
8
9authenticateWithFallback()

注意事项

  • 始终在 reason 参数中提供有意义的消息,帮助用户理解为什么需要认证。
  • 在调用 LocalAuth.authenticate 之前,使用 LocalAuth.isAvailableLocalAuth.isBiometricsAvailable 检查认证选项的可用性。
  • 优雅地处理认证成功和失败的情况,为用户提供无缝体验。