UNPKG

mtl-js-sdk

Version:

ynf-fw-mtl-api

314 lines (291 loc) 8.83 kB
"use strict"; function Plugin(options, exports = {}) { const { platform } = options || { platform: window.mtl.platform }; const upesnVersion = window.mtl.upesnVersion || 0 function successCallBack(object = {}) { object.success && object.success({status : true}); object.complete && object.complete({status : true}); } // 人脸功能配置 function configuration(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { const eulurAngleObj = { pitch : 10, yaw : 10, roll : 10}; const { minFaceSize = 200, cropFaceSizeWidth = 400, occluThreshold = 0.5, blurThreshold = 0.7, timeout = 10, threshold = 0.6, maxCropImageNum = 1, sound = true, eulurAngle = JSON.stringify(eulurAngleObj) } = obj; obj.minFaceSize = minFaceSize; obj.cropFaceSizeWidth = cropFaceSizeWidth; obj.occluThreshold = occluThreshold; obj.blurThreshold = blurThreshold; obj.timeout = timeout; obj.threshold = threshold; obj.maxCropImageNum = maxCropImageNum; obj.sound = sound; obj.eulurAngle = eulurAngle execApiBridge("configuration", "UIBdFace", obj); } else { successCallBack(obj) } } // 打开活体检测页面 function openLivenessView(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { var list = ["camera"]; mtl.requestPermission({ list: list, success: function success() { const { isByOrder = true, numOfLiveness = 3 } = obj; obj.isByOrder = isByOrder; obj.numOfLiveness = numOfLiveness; execApiBridge("openLivenessView", "UIBdFace", obj); }, fail: obj.fail }); } else { successCallBack(obj) } } // 打开人脸图像采集页面 function openDetectionView(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { var list = ["camera"]; mtl.requestPermission({ list: list, success: function success() { execApiBridge("openDetectionView", "UIBdFace", obj); }, fail: obj.fail }); } else { successCallBack(obj) } } // 关闭活体检测页面 function closeLivenessView(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge("closeLivenessView", "UIBdFace", obj); } else { successCallBack(obj) } } // 关闭人脸图像采集页面 function closeDetectionView(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge("closeDetectionView", "UIBdFace", obj); } else { successCallBack(obj) } } // 是否支持指纹识别 function isValid(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge("isValid", "touchID", obj); } else { successCallBack(obj) } } // 验证faceID function verify(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { const { title = '验证指纹密码' } = obj; obj.title = title; execApiBridge("verify", "touchID", obj); } else { successCallBack(obj) } } // 取消验证 function cancelVerify(obj={}) { if (platform === 'APIAndroid') { execApiBridge("cancelVerify", "touchID", obj); } else { successCallBack(obj) } } function verifyLoginPassword(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge("verifyLoginPassword", "mtlGestureUnlock", obj); } else if (platform === 'upesn') { if (upesnVersion > 0) { execApiBridge("verifyLoginPassword", null, obj); } else { execEsnBridge('verifyLoginPassword', obj); } } else { successCallBack(obj) } } // 打开设置密码页面 function gestureCreate(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge("create", "mtlGestureUnlock", obj); } else if (platform === 'upesn') { if (upesnVersion > 0) { execApiBridge("setGesturePassword", null, obj); } else { execEsnBridge('setGesturePassword', obj); } } else { successCallBack(obj) } } // 获取手势密码 function gesturePassword(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge("gesturesPassword", "mtlGestureUnlock", obj); } else if (platform === 'upesn' && upesnVersion > 0) { execApiBridge("gesturePassword", null, obj); } else { successCallBack(obj) } } // 清空设置的手势密码 function gestureDelete(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge("delete", "mtlGestureUnlock", obj); } else if (platform === 'upesn' && upesnVersion > 0) { execApiBridge("gestureDelete", null, obj); } else { successCallBack(obj) } } // 打开验证手势密码视图 function gestureValidate(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { const { track = true } = obj; obj.track = track; execApiBridge("validate", "mtlGestureUnlock", obj); } else if (platform === 'upesn') { if (upesnVersion > 0) { const { track = true } = obj; obj.track = track; execApiBridge("verifyGesturePassword", null, obj); } else { execEsnBridge('verifyGesturePassword', obj) } } else { successCallBack(obj) } } //vr // 打开页面 function vrOpen(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { const { path, type = 'sphere', device = 0, gyroEnable = true, zoomEnable = true, fixed = true, showBackBtn = true } = obj; if (!path) { invokeFail(obj, { msg: "image path is null", }); return; } execApiBridge("open", "detuPanoPlayer", {...obj, type, device, gyroEnable, zoomEnable, fixed, showBackBtn }); } else { successCallBack(obj) } } // 关闭页面 function vrClose(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge("close", "detuPanoPlayer", obj); } else { successCallBack(obj) } } // 设置模式 function vrSetViewMode(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { const { mode } = obj; if (!mode) { obj.mode = 1; } execApiBridge("setViewMode", "detuPanoPlayer", obj); } else { successCallBack(obj) } } // api内部方法 function execApiBridge(method, requireName, object) { mtl.execPluginBridge({ ...object, method, requireName }) } function invokeFail(param, err) { if (!param) return; if (err && !err.message) { err.message = err.msg || err.errMsg; } typeof param.fail === "function" && param.fail(err); } //upesn 内部方法 function execEsnBridge(method, source) { let data = { ...source, fail: function(error) { source.fail(_getErrormsg(method, error)); } }; console.log("exec window.YYEsnBridge.do method :", method); console.log("data: ", data); window.YYEsnBridge.do(method, data); } /** * 400 参数不合法 401 用户无权限访问 405 APP无权限进行此项操作,如打开照相机,APP未取得授权 406 文件大小超出限制 500 http请求错误 501 http服务器错误 1001 无网络 1002 解析错误 1003 用户取消 -1 未知错误 -2 界面超时 -1000 未找到对应方法 * @param {*} error */ function _getErrormsg(method, error, __start) { let esnError = { code: -1, message: errmsg }; if (typeof error === "object") { let code = error.errCode; let msg = ""; if (code == 1003) { msg = "by user canceled"; } else if (code == -1000) { msg = "not found function"; } else if (code == 405) { msg = "Unauthorized and unauthorized to perform this operation"; } else if (code == 401) { msg = "User does not have permission to access"; } esnError.code = code; esnError.message = msg || JSON.stringify(error); } let errmsg = `YYZone api ${__start + method}, error message: ${ esnError.message }`; esnError.message = errmsg; return esnError; } let apiMethods = { configuration, openLivenessView, openDetectionView, closeLivenessView, closeDetectionView, isValid, verifyLoginPassword, verify, cancelVerify, gestureCreate, gesturePassword, gestureDelete, gestureValidate, vrSetViewMode, vrClose, vrOpen }; const methods = apiMethods; exports.module = methods; exports.symbolPath = "ai"; return exports; } export default Plugin;