fingerprint常见问题我要提意见
Fingerprint模块管理指纹识别。
Android平台6.0及以上系统支持,仅适配Google官方指纹识别的标准接口的设备。
方法:
- isSupport: 当前设备环境是否支持指纹识别
 - isKeyguardSecure: 当前设备是否设置密码锁屏
 - isEnrolledFingerprints: 当前设备是否已经录入指纹
 - authenticate: 指纹识别认证
 - cancel: 取消指纹识别认证
 
对象:
- AuthenticateOptions: JSON对象,指纹识别认证参数
 - FingerprintError: JSON对象,指纹识别错误信息
 
回调方法:
- FingerprintSuccessCallback: 指纹识别认证成功回调函数
 - FingerprintErrorCallback: 指纹识别认证失败的回调函数
 
权限:
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。
平台支持:
- Android (支持) : 要求设置密码锁屏才可以使用指纹识别,如果没有设置密码锁屏应该提示用户进行设置。
 - iOS (不支持) : 不支持此功能,返回true。
 
示例:
<!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回调返回错误信息。
参数:
- successCB: ( FingerprintSuccessCallback ) 必选 识别认证成功回调 指纹识别操作认证成功时调用。
 - errorCB: ( FingerprintErrorCallback ) 必选 指纹识别操作认证失败时调用,每次指纹识别错误都会触发一次错误回调。
 - options: ( AuthenticateOptions ) 可选 识别认证参数 用于设置指纹识别界面显示的提示信息等。
 
返回值:
void : 无
平台支持:
- Android (支持) : 指纹识别过程中不会弹出任何界面,需要开发者根据业务需求弹出提示信息。
 - iOS (支持) : 指纹识别过程中会弹出系统界面。
 
示例:
<!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;
}			
				
说明:
用于设置指纹识别认证界面显示的提示信息等。
属性:
- message: (String 类型 )在指纹识别过程中显示在界面上的提示信息 如果指纹识别认证过程中不显示提示框,则不显示此信息。
平台支持
- Android – (不支持) : 指纹识别认证过程中不显示提示框,需要开发者自定义显示。
 - iOS – (支持) : 指纹识别认证过程中显示系统提示框,在提示框中显示此信息(默认显示信息为空字符串)。
 
<!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 waiting = null; // 自动调用指纹识别 plus.fingerprint.authenticate(function(){ waiting&&(waiting.onclose=null); plus.nativeUI.closeWaiting(); plus.nativeUI.alert('指纹识别成功'); }, function(e){ if(e.AUTHENTICATE_MISMATCH == e.code){ plus.nativeUI.toast('指纹匹配失败,请重新输入'); return; } waiting&&(waiting.onclose=null); plus.nativeUI.closeWaiting(); plus.nativeUI.alert('指纹识别失败('+e.code+')'); },{ message:'通过Home键验证已有手机指纹' }); // Android平台使用自定义等待框显示 if("Android"==plus.os.name){ waiting = plus.nativeUI.showWaiting('验证已有手机指纹',{width:'196px',height:'196px',padding:'16px',loading:{height:'96px',icon:'fp.png'},background:'rgba(0,0,0,0.3)'}); waiting.onclose = function(){ waiting = null; plus.fingerprint.cancel(); } } } document.addEventListener('plusready', plusReady, false); </script> </head> <body > 指纹识别认证 </body> </html> 
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;
}			
				
常量:
- UNSUPPORT: (Number 类型 )不支持指纹识别 当前设备不支持指纹识别功能时返回此错误,错误代码常量值为1。
 - KEYGUARD_INSECURE: (Number 类型 )设备未设置密码锁屏 当前设备为设置密码锁屏导致无法使用指纹识别功能时返回此错误,错误代码常量值为2。
 - FINGERPRINT_UNENROLLED: (Number 类型 )未录入指纹识别 当前设备未录入指纹导致无法使用指纹识别功能时返回此错误,错误代码常量值为3。
 - AUTHENTICATE_MISMATCH: (Number 类型 )指纹识别不匹配 用户指纹识别认证不通过时返回此错误,错误代码常量值为4。 用户每次尝试指纹识别认证未通过都会触发此错误,此时还可以继续识别认证。
 - AUTHENTICATE_OVERLIMIT: (Number 类型 )指纹识别次数超过限制 用户多次指纹识别认证不通过时返回此错误,错误代码常量值为5。 通常出现此错误后系统会锁定一段时间禁止使用指纹识别,如果再次调用指纹识别认证会立即返回此错误,因此出现此错误时应该提示用户使用其它方式进行认证。
 - CANCEL: (Number 类型 )取消指纹识别 用户取消指纹识别认证时返回此错误,错误代码常量值为6。
 - UNKNOWN_ERROR: (Number 类型 )未知错误 其它未知错误,错误代码常量值为7。
 
属性:
- code: (Number 类型 )错误代码 取值范围为FingerprintError对象的错误常量值。
 - message: (String 类型 )错误描述信息 详细错误描述信息。
 
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; // 错误描述信息
}
				
参数:
- error: ( FingerprintError ) 必选 获取加速度操作的错误信息 可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。
 
返回值:
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>