uni-app uni.startSoterAuthentication 拉起指纹 不同手机型号会拉起不同的拟态框 且拉起拟态框后不进行指纹验证 拟态框无相关关闭方法

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app uni.startSoterAuthentication 拉起指纹 不同手机型号会拉起不同的拟态框 且拉起拟态框后不进行指纹验证 拟态框无相关关闭方法

操作步骤:

  • 登录-指纹登录

预期结果:

  • 统一指纹弹出框 并且有相应关闭方法

实际结果:

  • 不同机型 弹框不同 而且没有相应关闭方法

bug描述:

【报Bug】uni.startSoterAuthentication 拉起指纹 不同手机型号会拉起不同的拟态框?而且拉起拟态框之后,不进行指纹验证。拟态框没有相关关闭方法?


| 信息类别         | 信息内容                   |
|------------------|----------------------------|
| 产品分类         | uniapp/App                 |
| PC开发环境       | Mac                        |
| PC操作系统版本   | Mac OS 14.1.2 (23B92)      |
| HBuilderX类型    | 正式                       |
| HBuilderX版本    | 3.98                       |
| 手机系统         | Android                    |
| 手机系统版本     | Android 11                 |
| 手机厂商         | 华为                       |
| 手机机型         | mate 30                    |
| 页面类型         | vue                        |
| vue版本          | vue2                       |
| 打包方式         | 云端                       |
| 项目创建方式     | HBuilderX                  |

1 回复

在 uni-app 中使用 uni.startSoterAuthentication 进行指纹验证时,可能会遇到不同手机型号拉起不同的拟态框,并且拉起后不进行指纹验证,且拟态框没有相关关闭方法的问题。以下是一些可能的解决思路和建议:

1. 确认设备支持指纹识别

在调用 uni.startSoterAuthentication 之前,建议先检查设备是否支持指纹识别。可以使用 uni.checkIsSoterEnrolledInDeviceuni.checkIsSupportSoterAuthentication 来确认设备是否支持指纹识别以及是否已经录入了指纹。

uni.checkIsSupportSoterAuthentication({
    success(res) {
        if (res.supportMode.includes('fingerPrint')) {
            console.log('设备支持指纹识别');
        } else {
            console.log('设备不支持指纹识别');
        }
    },
    fail(err) {
        console.log('检查失败', err);
    }
});

uni.checkIsSoterEnrolledInDevice({
    checkAuthMode: 'fingerPrint',
    success(res) {
        if (res.isEnrolled) {
            console.log('设备已录入指纹');
        } else {
            console.log('设备未录入指纹');
        }
    },
    fail(err) {
        console.log('检查失败', err);
    }
});

2. 处理不同手机型号的兼容性问题

不同手机型号的指纹识别实现可能有所不同,尤其是 Android 设备,不同厂商可能会定制不同的指纹识别界面。如果遇到拟态框拉起后不进行指纹验证的问题,可能是设备本身的问题或者 API 的实现问题。

可以尝试以下方法:

  • 重新调用 API:在拟态框拉起后不进行指纹验证的情况下,可以尝试重新调用 uni.startSoterAuthentication,或者等待一段时间后再次调用。
  • 捕获错误信息:在调用 uni.startSoterAuthentication 时,捕获错误信息并进行相应的处理。
uni.startSoterAuthentication({
    requestAuthModes: ['fingerPrint'],
    challenge: '123456',
    authContent: '请验证指纹',
    success(res) {
        console.log('指纹验证成功', res);
    },
    fail(err) {
        console.log('指纹验证失败', err);
        // 可以在这里进行重试或提示用户
    }
});

3. 手动关闭拟态框

如果拟态框没有提供关闭方法,可以尝试通过以下方式手动关闭:

  • 返回键监听:监听设备的返回键,当用户按下返回键时,手动关闭拟态框。
  • 超时处理:设置一个超时时间,如果在一定时间内没有进行指纹验证,可以提示用户并手动关闭拟态框。
let timeout = setTimeout(() => {
    console.log('指纹验证超时');
    // 可以在这里提示用户并关闭拟态框
}, 10000); // 10秒超时

uni.startSoterAuthentication({
    requestAuthModes: ['fingerPrint'],
    challenge: '123456',
    authContent: '请验证指纹',
    success(res) {
        clearTimeout(timeout);
        console.log('指纹验证成功', res);
    },
    fail(err) {
        clearTimeout(timeout);
        console.log('指纹验证失败', err);
    }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!