mtl-js-sdk
Version:
ynf-fw-mtl-api
314 lines (291 loc) • 8.83 kB
JavaScript
;
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;