安全键盘

弹出安全键盘

功能说明

用于 Web 上的输入框调起Native的安全键盘功能进行密码等输入。

功能接口

TMFJSBridge.invoke('showSafeKeyboard', {id,inputType}, callback);
入参 类型 描述 必选 默认值
id string 输入框标识,一般为输入框 ID Y /
inputType integer 安全键盘类型(0全键盘,1数字键盘 , 2身份证) N 0
callback function 返回值回调函数 Y /
出参 类型 描述
retCode integer 业务的返回码,0表示成功,
msg string 错误信息,当 retCode=0 是为空字符串

代码示例

<div>
<input id="textInput" readonly="readonly" type="text" onclick="tmf_showSafeKeyboard('textInput');"/>
<script>
function tmf_showSafeKeyboard(elementId) {
    var inputV = document.getElementById(elementId);
    TMFJSBridge.invoke('showSafeKeyboard', {
        id : elementId,                            // string 必选
        inputType: 0                                // integer 键盘类型
    }, function (res) {
        retCode        :res.retCode,            // integer
        msg                :res.msg,                    // string
    });
}
</script>
</div>

注意事项

input 需要设置 readonly="readony" 才能调起安全键盘。

关闭安全键盘

功能说明

JS 方法关闭 Native 的安全键盘。

功能接口

TMFJSBridge.invoke('closeSafeKeyboard', {}, callback);
入参 类型 描述 必选 默认值
callback function 返回值回调函数 Y /

代码示例

<div>
<script>
function tmf_showSafeKeyboard(elementId) {
    var inputV = document.getElementById(elementId);
    TMFJSBridge.invoke('closeSafeKeyboard', {
    }, function (res) {
    });
}
</script>
</div>

响应安全键盘

功能说明

Native 安全键盘的各种操作回调,JS 需要注册 Event 监听。

回调接口及示例代码

  • 键盘输入
document.addEventListener("tmf_sk_inputOneChar",callback);
出参 类型 描述
id integer 调起键盘时传入的输入框标识,一般为输入框 ID
content string 键盘输入加密后的字符
document.addEventListener("tmf_sk_inputOneChar",function(res){
    var tmf = res.tmf;
    var inputV = document.getElementById(tmf.id);
    inputV.value += tmf.content;
})
  • 键盘退格
document.addEventListener("tmf_sk_deleteOneChar",callback);
出参 类型 描述
id integer 调起键盘时传入的输入框标识,一般为输入框 ID
document.addEventListener("tmf_sk_deleteOneChar",function(res){
        var tmf = res.tmf;
    var inputV = document.getElementById(tmf.id);
    var value = inputV.value;
    if (value.length > 0) {
        inputV.value = value.substring(0, value.length - 1);
    }
})
  • 键盘关闭
document.addEventListener("tmf_sk_close",callback);
出参 类型 描述
id integer 调起键盘时传入的输入框标识,一般为输入框 ID
context string 加密字符解密所需的context的base64字符串
document.addEventListener("tmf_sk_close",function(res){
    console.log(res.tmf);
})
  • 键盘点击确认
document.addEventListener("tmf_sk_complete",callback);
出参 类型 描述
id integer 调起键盘时传入的输入框标识,一般为输入框 ID
context string 加密字符解密所需的 context 的 base64 字符串
document.addEventListener("tmf_sk_complete",function(res){
    var tmf = res.tmf;
    var inputV = document.getElementById(tmf.id);
    if (tmf.context.length == 0 || inputV.value.length == 0){
        return;
    }
      // 加密数据的解密过程应放在服务端进行,前段不应该解密
})
  • 键盘刷新
document.addEventListener("tmf_sk_relayout",callback);
出参 类型 描述
/ / /
document.addEventListener("tmf_sk_relayout",function(res){
    console.log(res);
      // 这里需要对所有使用安全键盘输入的输入框进行清空。因此只建议敏感信息使用安全键盘进行输入且在10分钟之内完成输入
    var inputs = [""];
    inputs.forEach((v, i) => {
        var inputV = document.getElementById(v);
        inputV.value = "";
    });
})

注意事项

  • 安全键盘的解密不应放在前端进行。应将contexttext发送至服务端,由服务端完成解密逻辑。

  • 键盘刷新事件

    • 键盘的 context 与 Native 对象(iOS 的 webViewController,android的Activity)进行绑定,包含键位映射数据。发生改变时会进行回调。

    • 事件触发

      • 安全键盘弹出方法showSafeKeyboard中,如果type值发生改变,键盘回刷新并执行该回调。
      • 用户在当前页面停留时间超过安全键盘所设置的会话时长(10分钟)时,执行输入操作,context 会发生改变并回调该事件。
    • 当前方法回调时,因为键值映射数据已改变,需要把 H5 页面的所有使用安全键盘进行输入的输入框内容清空,让用户重新输入。

密码校验

弱密码检测

TMFJSBridge.invoke('safeKeyboardWeakCheck', {text,context,strength,repeatNum}, callback);
入参 类型 描述
text String 加密后的密文
context String 安全键盘上下文的 base64String
strength int 密码强度
0:不检测
1:纯数字或者字母键盘:包含连续、重复字母或数字为弱密码
2:数字+字母键盘:包含连续、重复字母或数字为弱密码;无数字或者字母为弱密码
3:数字+字母键盘:包含连续、重复字母或数字为弱密码;无数字或者字母为弱密码;无大小写字母为弱密码
4:数字+字母+特殊字符:包含连续、重复字母或数字为弱密码;无数字或者字母为弱密码;无大小写字母为弱密码;无特殊字符为弱密码
repeatNum int 连续密码位数
  • callBack
出参 类型 描述
isPass int 0:不通过
1:通过
errorCode int 0:没有错误
1:请求参数有误
2:服务端配置有误
3:处理超时
4:查询异常
5:键盘数据已经过期,需要重新输入再验证
6:还原失败
7:两次密码输入不一致
  • 调用示例
// 弱密码检测
function tmf_weakCheck(){
    var input4 = keyboardContext['textInput4'];
    var input5 = keyboardContext['textInput5'];
    var strength = document.getElementById('textInput6').value;
    var repeatNum = document.getElementById('textInput7').value;

    TMFJSBridge.invoke('safeKeyboardWeakCheck', {
        text:input4.text,
        context:input4.context,
        strength:strength,
        repeatNum:repeatNum,
    }, function (res){
        console.log(res);
        if (res.isPass == 1 && res.errorCode == 0){
            tmf_alert("弱密码检测通过")
        } else {
            tmf_alert("弱密码检测不通过")
        }
    });
}

二次密码一致性检测

TMFJSBridge.invoke('safeKeyboardDoubleCheck', {text1{text,context},text2{text,context},strength,repeatNum}, callback);
入参 类型 说明
text1 Object 第一次输入的内容对象,包含text,context
text1.text String 加密后的密文
text1.context String 安全键盘上下文的base64String
text2 Object 第二次输入的内容对象,包含text,context
text2.text String /
text2.context String /
strength int 密码强度
0:不检测
1:纯数字或者字母键盘:包含连续、重复字母或数字为弱密码
2:数字+字母键盘:包含连续、重复字母或数字为弱密码;无数字或者字母为弱密码
3:数字+字母键盘:包含连续、重复字母或数字为弱密码;无数字或者字母为弱密码;无大小写字母为弱密码
4:数字+字母+特殊字符:包含连续、重复字母或数字为弱密码;无数字或者字母为弱密码;无大小写字母为弱密码;无特殊字符为弱密码
repeatNum int 连续密码位数
  • callBack
出参 类型 描述
isPass int 0:不通过
1:通过
errorCode int 0:没有错误
1:请求参数有误
2:服务端配置有误
3:处理超时
4:查询异常
5:键盘数据已经过期,需要重新输入再验证
6:还原失败
7:两次密码输入不一致
  • 调用示例
// 弱密码检测
function tmf_weakCheck(){
    var input4 = keyboardContext['textInput4'];
    var input5 = keyboardContext['textInput5'];
    var strength = document.getElementById('textInput6').value;
    var repeatNum = document.getElementById('textInput7').value;

    TMFJSBridge.invoke('safeKeyboardWeakCheck', {
        text:input4.text,
        context:input4.context,
        strength:strength,
        repeatNum:repeatNum,
    }, function (res){
        console.log(res);
        if (res.isPass == 0){
            if (res.errorCode == 7){
                tmf_alert("不通过,两次密码输入不一致")
            } else if (res.errorCode == 0) {
                tmf_alert("不通过,弱密码")
            } else {
                tmf_alert("不通过")
            }
        } else {
            tmf_alert("二次密码一致性检测通过")
        }
    });
}
Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""