uni-app app端指纹识别离线自定义基座打包问题

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

uni-app app端指纹识别离线自定义基座打包问题

问题描述

在同一台手机上:

  • 在debug模式下使用标准基座运行:调用 uni.checkIsSupportSoterAuthentication,能正常返回 {"supportMode":["fingerPrint"],"checkIsSupportSoterAuthentication:ok"}
  • 在离线自定义基座打包安装之后:调用 uni.checkIsSupportSoterAuthentication,返回 {"supportMode":[],"checkIsSupportSoterAuthentication:ok"},无法识别指纹系统可用。

fingerPrint 相关的 fingerprint-release.aar 已经在自定义基座的 lib 中添加,dcloud_properties.xml 也已经添加了节点 <feature name="Fingerprint" value="io.dcloud.feature.fingerprint.FingerPrintsImpl"/>,权限 <uses-permission android:name="android.permission.USE_FINGERPRINT"/> 也已经在 AndroidManifest.xml 中添加。

请问还有哪里需要设置吗?有大佬知道吗?

开发环境与配置

项目创建方式 版本号
自定义基座 未提供

1 回复

针对uni-app在app端实现指纹识别功能,并在离线自定义基座打包过程中可能遇到的问题,这里提供一个基本的实现思路和相关的代码案例。请注意,由于uni-app本身并不直接提供指纹识别功能,通常需要通过原生插件或SDK来实现这一功能。

实现思路

  1. 引入原生插件:首先,需要找到一个支持指纹识别的原生插件,并将其集成到uni-app项目中。

  2. 编写插件接口:在原生插件中编写指纹识别功能的接口,包括初始化、验证指纹等。

  3. 在uni-app中调用:通过uni-app的JSBridge调用原生插件的接口,实现指纹识别功能。

  4. 离线自定义基座打包:使用HBuilderX将项目打包为离线自定义基座,并确保原生插件已正确集成。

代码案例

原生插件(示例,具体实现需根据插件文档)

// 假设这是一个iOS原生插件
#import <Foundation/Foundation.h>

@interface FingerprintPlugin : NSObject

+ (void)authenticateWithSuccess:(void (^)(void))success
                        failure:(void (^)(NSError *error))failure;

@end

@implementation FingerprintPlugin

+ (void)authenticateWithSuccess:(void (^)(void))success
                        failure:(void (^)(NSError *error))failure {
    // 调用系统指纹识别接口
    LAContext *context = [[LAContext alloc] init];
    NSError *error = nil;
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                localizedReason:@"请使用指纹解锁"
                          reply:^(BOOL success, NSError *error) {
            if (success) {
                if (successBlock) {
                    successBlock();
                }
            } else {
                if (failureBlock) {
                    failureBlock(error);
                }
            }
        }];
    } else {
        if (failureBlock) {
            failureBlock(error);
        }
    }
}

@end

uni-app调用原生插件

// 在uni-app的页面中调用原生插件
export default {
    methods: {
        checkFingerprint() {
            plus.bridge.exec('FingerprintPlugin', 'authenticateWithSuccess', [], (res) => {
                console.log('指纹验证成功');
            }, (e) => {
                console.error('指纹验证失败', e);
            });
        }
    }
}

注意事项

  • 确保原生插件已正确集成到uni-app项目中。
  • 在调用原生插件接口时,注意参数和回调函数的正确性。
  • 离线自定义基座打包时,需要确保所有依赖和资源都已正确包含。

以上代码仅为示例,具体实现需根据所使用的原生插件和uni-app的版本进行调整。

回到顶部