@nstudio/nativescript-xavier-passport
为 NativeScript 设计的护照/MRZ 读取器
npm i --save @nstudio/nativescript-xavier-passport

NativeScript Xavier Passport

NativeScript 插件,用于扫描护照和卡片上的 MRZ 数据,适用于 Android 和 iOS。

npm npm stars forks license

nStudio banner

您在项目或插件上需要帮助吗?随时联系 nStudio 团队以获取有关移动和 Web 应用程序开发的最佳实践 [email protected]


NativeScript Xavier-Passport

这是一个 NativeScript 跨平台插件,用于包装适用于 iOS 和 Android 的 Black Shark Tech Xavier 库。

许可协议

我们的代码由 2018-2019 年 nStudio, LLC 所有。所有内容均在 Apache 2.0 许可下授权,这意味着您可以在任何类型的程序中包含它。

但是,基本 Xavier 库必须从他们那里获得授权,请参阅:https://github.com/BlackSharkTech/Xavier-demo-android 和 https://github.com/BlackSharkTech/Xavier-demo-ios 获取真实的许可证密钥,您需要联系 sales @ blacksharktech.com

安装

同一插件适用于 NativeScript 5.x 及以上版本

在您的项目根目录中运行 tns plugin add @nstudio/nativescript-xavier-passport

Android 必需设置

在您的应用/App_Resources/Android/src/main/res/AndroidManifest.xml 中,您需要执行以下操作:

  1. xmlns:tools="http://schemas.android.com/tools" 添加到 <Manifest ...
  2. <application 中添加 tools:replace="android:allowBackup"
    Files 3a. 在 <uses-sdk 中将 android:minSdkVersion="XX" 更改为至少 21。3b. 如果您使用的是 NativeScript 的新版本且您的文件中没有 <uses-sdk,则需要更改 app/App_Resources/Android/app.gradle 文件。将 minSdkVersion 更改为至少 21

用法

开始扫描

const Passport = require('@nstudio/nativescript-xavier-passport');

const zp = new Passport({"licenseKey": "<LICENSE_KEY>"});
zp.on("results", function(results) { console.log("Results:", results); });
zp.start();

实例化护照对象

new Passport(options)

选项

  • licenseKey = 您的许可证密钥(测试时可以是任何字符串!)
  • boundingBoxSearchingColor = 边框框颜色
  • boundingBoxFoundColor = 找到边框框时的颜色
  • closeButtonColor = 关闭按钮颜色
  • flashOnButtonColor = 开闪光按钮颜色
  • flashOffButtonColor = 关闪光按钮颜色
  • flashButtonEnabled = (true/false) 显示闪光按钮
  • instructionTextEnabled = (true/false) 在相机中显示说明性文字
  • instructionText = 要显示的文本
  • instructionTextColor = 文本颜色
  • instructionTextFont = 要使用的字体
  • cameraNegativeSpaceBackgroundEnabled = 背景空间
  • cameraNegativeSpaceBackgroundColor = 背景颜色

.enableDebug()

将启用更多日志输出到日志系统。

.enableCloseHack()

可能适用于 iOS;MRZ 的最后一个版本在关闭通知方面存在问题;因此,我们有一个解决方案...

.start()

zp.start();

开始扫描

事件

zp.on("error", function(error) { console.log("Error", error); });
zp.on("closed", function() { console.log("Closed the reader"); });
zp.on("results", function(results) { console.log("Results", results); });
  • results - 将返回一个包含所有键的对象,包括作为 "rawMrz" 键的原始数据。
  • error - 将返回 Xavier 的错误消息,或者如果您的结果或关闭事件代码存在错误,则将通过此回调传递您的代码错误。
  • closed - 当关闭扫描屏幕时将被触发。(在iOS上这会被触发多次)

结果对象

  • documentImage - 证件图片;这可能是原生iOS图片或Android位图。您可以使用 fromNativeSource() 函数将其分配给 ImageSource。

  • documentType - 证件类型。

  • countryCitizen - 证件所属国家/国籍代码

  • givenName - 证件持有者的名字/姓氏。

  • surname - 姓氏/姓氏/家族名称

  • documentNumber - 证件号码。

  • countryIssue - 发证国家代码

  • dateBirth - 出生日期;以 YYMMDD 格式返回

  • sex - 证件持有者的性别。

  • dateExpiration - 证件有效期;以 YYMMDD 格式返回

  • optionalData - MRZ 第二行的可选数据

  • optionalData2 - MRZ 第三行的可选数据

  • stateIssue - 发证州/省

  • rawMrz - 读取的未解析的 MRZ

  • documentNumberCheckDigit - 证件号码的校验位

  • dateBirthCheckDigit - 出生日期的校验位

  • dateExpirationCheckDigit - 有效期截止日期的校验位

  • optionalDataCheckDigit - 可选数据的校验位

  • compositeCheckDigit - 文件号码、出生日期、到期日期、可选数据及其校验位的复合校验位

示例

请参阅示例源代码(见:main-view-model.js)。