uni-app 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
中添加。
请问还有哪里需要设置吗?有大佬知道吗?
开发环境与配置
项目创建方式 | 版本号 |
---|---|
自定义基座 | 未提供 |
针对uni-app在app端实现指纹识别功能,并在离线自定义基座打包过程中可能遇到的问题,这里提供一个基本的实现思路和相关的代码案例。请注意,由于uni-app本身并不直接提供指纹识别功能,通常需要通过原生插件或SDK来实现这一功能。
实现思路
-
引入原生插件:首先,需要找到一个支持指纹识别的原生插件,并将其集成到uni-app项目中。
-
编写插件接口:在原生插件中编写指纹识别功能的接口,包括初始化、验证指纹等。
-
在uni-app中调用:通过uni-app的JSBridge调用原生插件的接口,实现指纹识别功能。
-
离线自定义基座打包:使用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的版本进行调整。