fingerprint常见问题我要提意见

Fingerprint模块管理指纹识别。

说明:

目前还有很多设备没有指纹识别模块,需要调用此方法判断是否可使用指纹识别功能。

方法:

对象:

回调方法:

权限:

5+功能模块(permissions)


{
// ...
"permissions":{
	// ...
	"Fingerprint": {
		"description": "指纹识别"
	}
}
}
			

isSupport

当前设备环境是否支持指纹识别


boolean plus.fingerprint.isSupport();
				

说明:

目前还有很多设备没有指纹识别模块,需要调用此方法判断是否可使用指纹识别功能。

参数:

返回值:

Boolean : 设备支持指纹识别则返回true,否则返回false。

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
	<title>Fingerprint Example</title>
	<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
	// 判断设备是否支持指纹识别
	if(plus.fingerprint) {
		document.getElementById('result').innerText = plus.fingerprint.isSupport()?'支持':'不支持';
	}else {
		console.log("请更新版本");
	}
}
document.addEventListener('plusready', plusReady, false);
	</script>
	</head>
	<body >
		当前设备环境是否支持指纹识别:
		<br/>
		<p id="result">...</p>
	</body>
</html>
				

isKeyguardSecure

当前设备是否设置密码锁屏


boolean plus.fingerprint.isKeyguardSecure();
				

说明:

如果设备没有设置密码锁屏,则无法使用指纹识别功能,建议调用指纹识别前先使用此接口检查。 调用plus.fingerprint.authenticate会返回失败。

参数:

返回值:

Boolean : 设备已设置密码锁屏则返回true,否则返回false。

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
	<title>Fingerprint Example</title>
	<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
	// 判断设备是否设置密码锁屏
	if(plus.fingerprint) {
		document.getElementById('result').innerText = plus.fingerprint.isKeyguardSecure()?'是':'否';
	}else {
		console.log("请更新版本");
	}
}
document.addEventListener('plusready', plusReady, false);
	</script>
	</head>
	<body >
		当前设备是否设置密码锁屏:
		<br/>
		<p id="result">...</p>
	</body>
</html>
				

isEnrolledFingerprints

当前设备是否已经录入指纹


boolean plus.fingerprint.isEnrolledFingerprints();
				

说明:

如果设备没有录入指纹,则无法使用指纹识别功能,建议调用指纹识别前先使用此接口检查。 调用plus.fingerprint.authenticate会返回失败。

参数:

返回值:

Boolean : 设备已经录入指纹则返回true,否则返回false。

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
	<title>Fingerprint Example</title>
	<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
	// 判断设备是否已经录入指纹
	if(plus.fingerprint) {
		document.getElementById('result').innerText = plus.fingerprint.isEnrolledFingerprints()?'是':'否';
	}else {
		console.log("请更新版本");
	}
}
document.addEventListener('plusready', plusReady, false);
	</script>
	</head>
	<body >
		当前设备是否已经录入指纹:
		<br/>
		<p id="result">...</p>
	</body>
</html>
				

authenticate

指纹识别认证


void plus.fingerprint.authenticate(successCB, errorCB, options);
				

说明:

用户可以开始输入指纹进行识别,如果认证成功则触发successCB回调,识别失败则触发errorCB回调返回错误信息。

参数:

返回值:

void : 无

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
	<title>Fingerprint Example</title>
	<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
	var result = document.getElementById('result');
	// 检查是否支持指纹识别
	if(plus.fingerprint) {
		if(!plus.fingerprint.isSupport()) {
			result.innerText = '此设备不支持指纹识别';
			return;
		}
		if(!plus.fingerprint.isKeyguardSecure()) {
			result.innerText = '此设备未设置密码锁屏,无法使用指纹识别';
			return;
		}
		if(!plus.fingerprint.isEnrolledFingerprints()) {
			result.innerText = '此设备未录入指纹,请到设置中开启';
			return;
		}
		result.innerText = '此设备支持指纹识别';
	}else {
		result.innerText = '当前环境不支持指纹识别API,请更新到最新版本';
	}
}
document.addEventListener('plusready', plusReady, false);

// 指纹识别认证 
function fingerpring() {
	var waiting = null;
	plus.fingerprint.authenticate(function(){
		plus.nativeUI.closeWaiting();//兼容Android平台关闭等待框
		alert('指纹识别成功');
	}, function(e){
		switch(e.code) {
		case e.AUTHENTICATE_MISMATCH:
		plus.nativeUI.toast('指纹匹配失败,请重新输入');
		break;
		case e.AUTHENTICATE_OVERLIMIT:
		plus.nativeUI.closeWaiting();//兼容Android平台关闭等待框
		plus.nativeUI.alert('指纹识别失败次数超出限制,请使用其它方式进行认证');
		break;
		default:
		plus.nativeUI.closeWaiting();//兼容Android平台关闭等待框
		plus.nativeUI.alert('指纹识别失败('+e.code+'),请重试');
		break;
		}
	});
	// Android平台弹出等待提示框 
	if('Android'==plus.os.name) {
		plus.nativeUI.showWaiting('指纹识别中...');
	}
}
	</script>
	</head>
	<body >
		指纹识别认证:
		<br/>
		<p id="result">...</p>
		<br/>
		<button onclick="fingerpring()">指纹识别</button>
	</body>
</html>
				

cancel

取消指纹识别认证


void plus.fingerprint.cancel();
				

说明:

取消当前正在处理的指纹识别认证操作。 如果当前没有进行指纹识别则不进行任何操作;如果当前正在进行指纹识别则触发错误回调(错误码为“CANCEL”)。

参数:

返回值:

void : 无

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
	<title>Fingerprint Example</title>
	<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
	// 自动调用指纹识别
	plus.fingerprint.authenticate(function(){
		plus.nativeUI.toast('指纹识别成功');
	}, function(e){
		plus.nativeUI.alert('指纹识别失败('+e.code+')');
	});
	// iOS平台指纹识别提示框会阻塞界面操作,定时调用
	if('iOS'==plus.os.name) {
		setTimeout(cancelFingerpring, 10000);
	}
}
document.addEventListener('plusready', plusReady, false);

// 取消指纹识别
function cancelFingerpring() {
	plus.fingerprint.cancel();
}
	</script>
	</head>
	<body >
		取消指纹识别认证
		<br/>
		<button onclick="cancelFingerpring()">取消识别</button>
		<br/>
		注意:iOS平台10秒后自动取消
	</body>
</html>
				

AuthenticateOptions

JSON对象,指纹识别认证参数


interface AuthenticateOptions {
	readonly attribute String message;
}			
				

说明:

用于设置指纹识别认证界面显示的提示信息等。

属性:

FingerprintError

JSON对象,指纹识别错误信息


interface FingerprintError {
	const Number UNSUPPORT = 1;
	const Number KEYGUARD_INSECURE = 2;
	const Number FINGERPRINT_UNENROLLED = 3;
	const Number AUTHENTICATE_MISMATCH = 4;
	const Number AUTHENTICATE_OVERLIMIT = 5;
	const Number CANCEL = 6;
	const Number UNKNOWN_ERROR = 7;
	readonly attribute Number code;
	readonly attribute String message;
}			
				

常量:

属性:

FingerprintSuccessCallback

指纹识别认证成功回调函数


void onSuccess() {
	// Authenticate success code.
}
				

参数:

返回值:

void : 无

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
	<title>Fingerprint Example</title>
	<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
	// 自动调用指纹识别
	plus.fingerprint.authenticate(function(){
		plus.nativeUI.alert('指纹识别成功');
	}, function(e){
		console.log('指纹识别失败('+e.code+')');
	});
}
document.addEventListener('plusready', plusReady, false);
	</script>
	</head>
	<body >
		指纹识别认证
	</body>
</html>
				

FingerprintErrorCallback

指纹识别认证失败的回调函数


function void onError(FingerprintError error) {
	// Handle error
	var code = error.code; // 错误编码
	var message = error.message; // 错误描述信息
}
				

参数:

返回值:

void : 无

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
	<title>Fingerprint Example</title>
	<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
	// 自动调用指纹识别
	plus.fingerprint.authenticate(function(){
		console.log('指纹识别成功');
	}, function(e){
		switch(e.code) {
		case e.AUTHENTICATE_MISMATCH:
		plus.nativeUI.alert('指纹匹配失败,请重新输入');
		break;
		case e.AUTHENTICATE_OVERLIMIT:
		plus.nativeUI.alert('指纹识别失败次数超出限制,请使用其它方式进行认证');
		break;
		default:
		plus.nativeUI.alert('指纹识别失败('+e.code+'),请重试');
		break;
		}
	});
}
document.addEventListener('plusready', plusReady, false);
	</script>
	</head>
	<body >
		指纹识别认证
	</body>
</html>