8.7 发布—WinterCG 兼容性第一部分
了解更多

在 GitHub 上查看

替换通知

此插件已被 @nativescript/biometrics 替换

@nativescript/fingerprint-auth

cli
npm install @nativescript/fingerprint-auth

然后打开 App_Resources/Android/app.gradle 并查找 minSdkVersion。如果它设置为低于 23 的版本,请将此 overrideLibrary 行添加到 App_Resources/Android/src/main/AndroidManifest.xml

xml
<uses-sdk
      android:minSdkVersion="17"
      android:targetSdkVersion="__APILEVEL__"
      tools:overrideLibrary="com.jesusm.kfingerprintmanager"/>

API

想要比这些原始代码示例更友好的指南吗?阅读 Nic Raboy 的关于此插件的博客文章

available

JavaScript

js
var fingerprintAuthPlugin = require('@nativescript/fingerprint-auth')
var fingerprintAuth = new fingerprintAuthPlugin.FingerprintAuth()

fingerprintAuth.available().then(function (avail) {
  console.log('Available? ' + avail)
})

TypeScript

typescript
import { FingerprintAuth, BiometricIDAvailableResult } from "@nativescript/fingerprint-auth";

class MyClass {
  private fingerprintAuth: FingerprintAuth;

  constructor() {
    this.fingerprintAuth = new FingerprintAuth();
  }

  this.fingerprintAuth.available().then((result: BiometricIDAvailableResult) => {
    console.log(`Biometric ID available? ${result.any}`);
    console.log(`Touch? ${result.touch}`);
    console.log(`Face? ${result.face}`);
  });
}

verifyFingerprint

请注意,在 iOS 模拟器上,这只会 resolve()

typescript
fingerprintAuth
  .verifyFingerprint({
    title: 'Android title', // optional title (used only on Android)
    message: 'Scan yer finger', // optional (used on both platforms) - for FaceID on iOS see the notes about NSFaceIDUsageDescription
  })
  .then((enteredPassword?: string) => {
    if (enteredPassword === undefined) {
      console.log('Biometric ID OK')
    } else {
      // compare enteredPassword to the one the user previously configured for your app (which is not the users system password!)
    }
  })
  .catch((err) => console.log(`Biometric ID NOT OK: ${JSON.stringify(err)}`))

verifyFingerprintWithCustomFallback (仅限 iOS,在 Android 上回退到 verifyFingerprint)

您可以自己创建,而不是回退到 iOS 的默认密码界面。只需在错误回调被调用时显示它即可。

typescript
fingerprintAuth
  .verifyFingerprintWithCustomFallback({
    message: 'Scan yer finger', // optional, shown in the fingerprint dialog (default: 'Scan your finger').
    fallbackMessage: 'Enter PIN', // optional, the button label when scanning fails (default: 'Enter password').
    authenticationValidityDuration: 10, // optional (used on Android, default 5)
  })
  .then(
    () => {
      console.log('Fingerprint was OK')
    },
    (error) => {
      // when error.code === -3, the user pressed the button labeled with your fallbackMessage
      console.log(
        'Fingerprint NOT OK. Error code: ' +
          error.code +
          '. Error message: ' +
          error.message
      )
    }
  )

Face ID (iOS)

iOS 11 添加了对 Face ID 的支持,并首先由 iPhone X 支持。开发人员需要为 NSFaceIDUsageDescription 提供一个值,否则您的应用程序可能会崩溃。

您可以通过将类似以下内容添加到 app/App_Resources/ios/Info.plist 中来提供此值(使用 Face ID 的原因)。

xml
<key>NSFaceIDUsageDescription</key>
  <string>For easy authentication with our app.</string>

安全++ (iOS)

自 iOS9 以来,可以检查自上次检查以来注册的指纹列表是否发生变化。建议您添加此检查,以便您可以抵御对您的应用程序的攻击。有关更多详细信息,请参见 这篇文章

因此,不要在 available 之后检查指纹,而要添加另一个检查。如果 didFingerprintDatabaseChange 返回 true,您可能希望在再次接受有效指纹之前重新验证用户。

typescript
fingerprintAuth.available().then((avail) => {
  if (!avail) {
    return
  }
  fingerprintAuth.didFingerprintDatabaseChange().then((changed) => {
    if (changed) {
      // re-auth the user by asking for his credentials before allowing a fingerprint scan again
    } else {
      // call the fingerprint scanner
    }
  })
})

变更日志

  • 6.2.0 修复了 iOS 上的潜在绕过问题
  • 6.1.0 修复了 Android 上的潜在绕过问题
  • 6.0.3 Android 干扰了其他插件的 Intent
  • 6.0.2 插件在 iOS 生产版本/TestFlight 上无法正常工作
  • 6.0.1 修复了与 NativeScript 3.4 的兼容性问题。
  • 6.0.0 允许在 Android 上使用自定义 UI。
  • 5.0.0 更好的 Face ID 支持。重大更改,请参阅 available 的 API。
  • 4.0.1 与 官方 NativeScript 插件种子 对齐。需要 NativeScript 3.0.0+。感谢 @angeltsvetkov!
  • 4.0.0 转换为 TypeScript。更改了 verifyFingerprintWithCustomFallback 的错误响应类型。
  • 3.0.0 添加了 Android 支持。将 nativescript-touchid 重命名为 nativescript-fingerprint-auth(对于任何不便之处,我们深感抱歉!)。
  • 2.1.1 Xcode 8 兼容性 - 需要 NativeScript 2.3.0+。
  • 2.1.0 添加了 didFingerprintDatabaseChange 以增强安全性。
  • 2.0.0 添加了 verifyFingerprintWithCustomFallbackverifyFingerprint 现在回退到密码。
  • 1.2.0 您现在可以使用内置密码界面作为回退。
  • 1.1.1 添加了 TypeScript 定义。
  • 1.1.0 添加了 Android 平台,它将始终为 touchid.available 返回 false。

许可证

Apache 许可证 2.0 版

上一个
Facebook
下一个
Flutter