npm i --save @kefah/nativescript-otp
- 版本:1.0.8
- GitHub: https://github.com/kefahB/plugins
- NPM: https://npmjs.net.cn/package/%40kefah%2Fnativescript-otp
- 下载
- 前一天:0
- 上周:2
- 上个月:17
@kefah/nativescript-otp
社交按钮
仓库元数据
A Nativescript 插件,用于自动填充 iOS 和 Android 的单次密码 OTP
文档
目录
安装
ns plugin add @kefah/nativescript-otp
OR
npm i @kefah/nativescript-otp
限制
iOS:此功能从 iOS 12.0
开始可用,不会与旧版本兼容
设置
唯一的设置是针对需要将哈希码附加到短信的 Android
,此过程稍微复杂一些,此插件提供了一个名为 getAppSignatures()
的辅助函数,可以生成 开发
哈希码,无法保证相同的哈希码在 生产
中有效,为此您需要手动生成。
通过调用 getAppSignatures()
获取开发哈希码,这将日志记录到控制台
PS:请使用
getAppSignatures()
获取哈希码后将其注释掉,不再需要
JS: packageName: org.nativescript.plugindemo Hash: I+D7XdR0yWS
- Google Docs
- 这是一个
Python
插件,用于生成哈希,它适用于所有操作系统 android-sms-hash-generator
开始之前
在大多数情况下,OTP 是一个
整数
值,如果可能,请避免使用字母字符。
由于某种原因,在 iOS 中,OTP 识别在某些默认键盘类型上有时无法工作,如果您遇到问题,请尝试将键盘类型设置为
整数
<notp:NativescriptOtp keyboardType="integer" hint="{{ L('activation_code') }}" text="{{ code }}" autocorrect="false" class="otp"/>
以下是一些成功接收短信的最佳实践
- 请尽量在您的短信中使用以下关键词:
Code
Passcode
Password
is
- 以
<#>
开头您的短信,我不确定这一点,因为它不在文档中 - 不要在短信和哈希码之间放置多行文本
- 使用简短代码
- 仅使用数字和字母字符
<#> your code is: 1234988
I+D7XdR0yWS
用法
此插件实现了 Nativescript TextField
,因此您可以将其用于代替常规的 TextField。
首先在您的页面中包含插件
<Page xmlns="http://schemas.nativescript.org/tns.xsd"
xmlns:notp="@kefah/nativescript-otp" navigatingTo="navigatingTo" class="page">
然后使用插件代替 TextField
<notp:NativescriptOtp hint="OTP" class="otp" text="{{ otp }}"/>
完整示例
<Page xmlns="http://schemas.nativescript.org/tns.xsd"
xmlns:notp="@kefah/nativescript-otp" navigatingTo="navigatingTo" class="page">
<Page.actionBar>
<ActionBar title="otp" icon="" class="action-bar">
</ActionBar>
</Page.actionBar>
<StackLayout class="p-20">
<ScrollView class="h-full">
<StackLayout>
<Button text="Test otp >" tap="{{ testIt }}" class="btn btn-primary"/>
<notp:NativescriptOtp hint="OTP" class="otp" text="{{ otp }}"/>
</StackLayout>
</ScrollView>
</StackLayout>
</Page>
将插件注册为监视传入短信,并传递一个回调函数,当插件捕获到短信时,此回调函数将被填充。
视图模型
import {NativescriptOtp, OTPResultInterface} from '@kefah/nativescript-otp';
export class DemoSharedOtp extends DemoSharedBase {
constructor() {
super();
console.log('test nativescript-otp!');
let otp = new NativescriptOtp();
otp.registerForOTP((otp: OTPResultInterface) => {
if(otp) {
console.error("OTP", otp);
this.set("otp", otp.otp)
// do other staff
// trigger verify...
return;
}
// No OTP was found
})
}
}
API
方法 | 类型 | 描述 | iOS | Android |
---|---|---|---|---|
registerForOTP: (cb) | 函数 | 将插件注册为监视传入短信 | x | x |
unregisterForOTP | 函数 | 注销监视 | x | x |
parseMsg(msg, regex) | 函数 | 此函数将解析短信以提取代码,除非您的代码是特殊的并且需要不同的 regex ,否则您不需要调用它,然后作为第二个参数传递您的范围 |
x | |
getAppSignatures() | 函数 | 用于获取 Android 开发哈希码的辅助函数 | x |
生成 Android 哈希码
package=_yourp_package_name_
keystore=debug.keystore
keystorepass=android
alias=androiddebugkey
keytool -exportcert -alias $alias -keystore $keystore -storepass $keystorepass | xxd -p | tr -d "[:space:]" | echo -n $package `cat` | openssl sha256 test.txt | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
keytool -exportcert -alias androiddebugkey -keystore debug.keystore -storepass android | xxd -p | tr -d "[:space:]" | echo -n $package `cat` | openssl sha256 | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
如何测试
iOS
遗憾的是,iOS 需要在真实设备上测试短信,苹果不允许在模拟器上模拟传入短信。
Android
这非常简单,请参见下面的图片