云端笔记
云端笔记
  • 发布:2017-04-27 23:04
  • 更新:2017-12-05 09:21
  • 阅读:3056

正在开发IOS的TouchID指纹识别扩展,但是遇到一个问题,不知道是我的代码写的有问题,还是Native.js的BUG

分类:Native.js

正在开发IOS的TouchID指纹识别扩展,但是遇到一个问题,不知道是我的代码写的有问题,还是Native.js的BUG
根据OC的代码开发了一下TouchID指纹识别的扩展,先贴代码。
OC原生代码

LAContext *lacontext = [[LAContext alloc] init];  
NSError *error;  
if ([lacontext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error])  
{  
    [lacontext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics  
               localizedReason:NSLocalizedString(@"Home键验证已有手机指纹", nil)  
                                 reply:^(BOOL success, NSError *error){  
                                     if (success)  
                                     {  
                                          NSLog(@"验证通过");  
                                     } else {  
                                         NSLog(@"失败");  
                                     }  
                                 }];  
}

JS代码:

var LAContext = plus.ios.importClass('LAContext');  
var lacontext  = plus.ios.newObject("LAContext");  
var isSupport = lacontext.canEvaluatePolicyerror(1, null); //返回是否支持指纹识别  
console.log(isSupport);  
if(isSupport){  
    lacontext.evaluatePolicylocalizedReasonreply(1, '请校验指纹', function(success, error){  
        console.log(success);  
        console.log(error);  
    });  
}

这段代码,可以正常调出指纹识别的窗口,但是手指放上去后,无论指纹正确与否,success输出都为空。

返回结果:

[LOG] : true  
[LOG] :   
[LOG] : 

第一个输出isSupport的位置判断是否支持指纹识别,可以正常返回true,第二个输出success和第三个输出error,无论指纹正确与否,全部输出空值。

提问,
1、OC闭包的写法对应到5+JS里面是不是这样的写法?
2、如果我的闭包写法正确的话,那么success没有正确返回布尔值,error也没有正常返回出NSError的对象,这个应该如何处理?其实error也没那么重要,只要success能正常返回就OK的。

2017-04-27 23:04 负责人:无 分享
已邀请:
云端笔记

云端笔记 (作者)

往前顶一下,看看有没有能解决的朋友,帮我看看!谢谢!

云端笔记

云端笔记 (作者)

唉,发了两天没有人帮忙回答,不过估计指纹识别是不能通过Native.js实现了,因为我发现原生方法中含有闭包的时候,JS的回调函数并不能正确的识别函数的参数。
于是自己用原生OC开发了一个5+插件,实现了指纹识别的功能。感觉用插件的方法也很方便,而且更加灵活。
但是唯一的缺点是,必须使用Xcode本地打包,才能使用。

云端笔记

云端笔记 (作者)

分享方法:http://ask.dcloud.net.cn/article/1348

江户川林柯南

江户川林柯南 - 永远的是一个学生

老哥,你的研究很深入啊,只可惜这个论坛小白太多了

该问题目前已经被锁定, 无法添加新回复