|
// 执行匿名方法,代码隔离,方便定义局部变量
(function () {
// 依赖IPU框架js:需要先引入ipu-mobile.js
// 身份证设备连接配置缓存key
var cardDeviceTypeKey = 'cardreader_type'; // 身份证读取设备类型缓存key
var cardConnectTypeKey = 'cardreader_connection'; // 身份证读取设备连接方式缓存key
// SIM设备连接配置缓存key
var simDeviceTypeKey = 'simreader_type'; // sim读取设备类型缓存key
var simConnectTypeKey = 'simreader_connection'; // sim读取设备连接类型缓存key
var simBtAddress = 'simreader_btn_address'; // sim读取蓝牙设备地址缓存key
window.AndroidWebView = {
/**
* 设置身份证读卡器类型
* @param {string} type 读卡器类型,SR/SYD/ZYZX分别代表森锐/三元达/中移在线
*/
setCardReaderType: function (type) {
IpuMobile.setMemoryCache(cardDeviceTypeKey, type);
},
/**
* 设置身份证读卡器连接方式
* @param {string} connection 连接方式 bt\otg\nfc
*/
setCardReaderConnection: function (connection) {
IpuMobile.setMemoryCache(cardConnectTypeKey, connection);
},
/**
* 设置sim读卡器设备类型
* @param {string} deviceType 设备类型
*/
setSimReaderDeviceType: function (deviceType) {
IpuMobile.setMemoryCache(simDeviceTypeKey, deviceType);
},
/**
* 设置sim读卡器连接方式
* @param {string} connectType 设备连接方式
*/
setSimReaderConnection: function (connectType) {
IpuMobile.setMemoryCache(simConnectTypeKey, connectType);
},
/**
* 设置sim读卡器蓝牙地址,可通过 AndroidWebView.btDeviceList()获取
* @param {string} btnAddress 蓝牙设备地址
*/
setSimReaderBtnAddress: function (btnAddress) {
IpuMobile.setMemoryCache(simBtAddress, btnAddress);
},
/**
* 读取身份证读卡器设备连接配置,蓝牙参数在设备驱动中配置不用传参
*
* @param {function} callback 回调函数
* @param {string} callback.deviceType 设备类型
* @param {string} callback.connectType 连接类型
*/
getCardReaderConfig: function (callback) {
IpuMobile.getMemoryCache(function (cacheResult) { // deviceType, connectType存储在缓存,不直接通过调用传递参数
cacheResult = JSON.parse(cacheResult);
var deviceType = cacheResult[cardDeviceTypeKey];
var connectType = cacheResult[cardConnectTypeKey];
callback(deviceType, connectType);
}, [cardDeviceTypeKey, cardConnectTypeKey]);
},
/**
* 读取SIm蓝牙设备连接配置
*
* @param {function} callback 回调函数
* @param {string} callback.deviceType 设备类型
* @param {string} callback.connectType 连接类型
* @param {string} callback.btnAddress 设备蓝牙地址
*/
getSimReaderConfig: function (callback) {
// 如需使用js内存缓存,可修改此方法,不用每次读取App缓存
IpuMobile.getMemoryCache(function (cacheResult) { // deviceType, connectType存储在缓存,不直接通过调用传递参数
cacheResult = JSON.parse(cacheResult);
var deviceType = cacheResult[simDeviceTypeKey];
var connectType = cacheResult[simConnectTypeKey];
var btnAddress = cacheResult[simBtAddress];
callback(deviceType, connectType, btnAddress);
}, [simDeviceTypeKey, simConnectTypeKey, simBtAddress]);
},
/**
* 获取蓝牙设备地址
*
* @param {function} callback 获取蓝牙回调函数
* @param {string} callback.result 蓝牙设备地址信息
*/
btDeviceList: function (callback) {
IpuMobile.btDeviceList(callback);
},
/**
* 获取客户端版本信息
*
* @param {function} callback 回调函数
* @param {string} callback.version 回调函数参数,客户端版本信息,如1.9.3
*/
getAppVesion(callback) {
IpuMobile.getAppVersion(function (result) {
callback(result);
})
},
/**
* 获取设备信息
*
* @param {function} callback 回调函数
* @param {Object} callback.result 回调函数参数,设备信息
* @param {string} callback.result.deviceType 设备类型,如 Huawei mate 20
* @param {string} callback.result.imei 设备imei信息
*/
getDeviceId: function (callback) {
var sysInfo = {};
var count = 0;
// 触发最终回调
function toBack() {
var info = {};
info.imei = sysInfo.IMEI;
info.deviceType = sysInfo.BRAND + ' ' + sysInfo.MODEL;
callback(info);
}
// 取手机信息
function getSysInfo(name) {
count++;
IpuMobile.getSysInfo(function (result) {
sysInfo[name] = result;
count--;
if (count == 0) { // 所有插件调用都已返回结果
toBack()
}
}, name);
}
getSysInfo('IMEI'); // imei
getSysInfo('MODEL'); // 型号
getSysInfo('BRAND'); // 品牌
},
/**
* 获取设备定位
*
* @param {function} callback 回调函数
* @param {Object} callback.result 回调函数参数,位置信息
* @param {string} callback.result.address 位置地址
* @param {string} callback.result.lon 经度
* @param {string} callback.result.lat 炜度
*/
getLocation: function (callback) { //
IpuMobile.location(function (result) {
result = JSON.parse(result);
var info = {
address: result.Address,
lon: result.Longitude,
lat: result.Latitude
};
callback(info);
});
},
/**
* 读取身份证
* 回调方法 getIdCardInfoResult(result),回调参数参考 https://docs.qq.com/sheet/DQXl1Q2JDYW53SHBr?tab=BB08J2
*
* @param {string} callbackKey 回调函数名称
*/
getIdCardInfo: function (callbackKey) { //
this.getCardAndUp(callbackKey, ''); // isTakePictur传空,即非0非1
},
/**
* 拍照
* 回调方法 getPhotoResult(result),回调参数参考 https://docs.qq.com/sheet/DQXl1Q2JDYW53SHBr?tab=BB08J2
*
* @param {string} callbackKey
*/
getPhotoInfo: function (callbackKey) {
IpuMobile.getPhoto(function (result) {
window.getPhotoResult({
errorCode: '0',
img: result,
callBackMethodName: callbackKey
})
}, 0); // 0返回base64字符串,1返回图片文件路径
},
/**
* 拍照上传身份证?
* 回调方法 getCardAndUpResultList(result)?,参数参考 https://docs.qq.com/sheet/DQXl1Q2JDYW53SHBr?tab=BB08J2
*
* @param {string} callbackKey 回调函数名
* @param {number} isTakePicture 是否需要拍照,1拍,0非白,
* @param {string} opId 操作员工号
* @param {string} timeStamp 时间戳
*/
getCardAndUp: function (callbackKey, isTakePicture, opId, timeStamp) {
this.getCardReaderConfig(function (deviceType, connectType) {
IpuMobile.getCardAndUp(function (result) { // IPU插件不直接返回json对象,只返回json字符串
result = JSON.parse(result);
if (result.code && !result.errorCode) { // 客户端返回的字段是code,项目使用字段是errorCode
result.errorCode = result.code
}
result.CallBackMethod = callbackKey;
window.getCardAndUpResultList && window.getCardAndUpResultList(result);
}, deviceType, connectType, isTakePicture, opId, timeStamp);
});
},
/**
* 写卡
* 回调方法 getWriteCardResult(result)?,参数参考 https://docs.qq.com/sheet/DQXl1Q2JDYW53SHBr?tab=BB08J2
*
* @param {string} accessNum 手机号友
* @param {string} operId 操作员工号
* @param {string} orgId 部门id
* @param {string} regionId 路由地州编码
*/
WriteCard: function (accessNum, operId, orgId, regionId) {
},
/**
* 携转写卡
* 回调方法 getWriteMNPCardResult(result)?,参数参考 https://docs.qq.com/sheet/DQXl1Q2JDYW53SHBr?tab=BB08J2
*
* 参数同WriteCard方法
*/
WriteMNPCard: function (accessNum, operId, orgId, regionId) {
},
/**
* ⽆纸化订单上传
* 回调方法 getAizhiResult(result)?,参数参考 https://docs.qq.com/sheet/DQXl1Q2JDYW53SHBr?tab=BB08J2
*
* @param {string} str xml字符串?json字符串?
*/
upAizhiInfo: function (str) {
IpuMobile.upAizhiInfo(str, function (result) { // TIMESTAMP与OPID字段看插件有没有返回
window.getAizhiResult && window.getAizhiResult(result);
});
},
/**
* 读卡(好像变动了)
* 回调方法 getCardInfoResult,参数参考 https://docs.qq.com/sheet/DQXl1Q2JDYW53SHBr?tab=BB08J2
*
*/
GetCardInfo: function () {
},
/**
* 打开文件,是下载远程文件?
* 没有回调?
*
* @param {string} path 文件路径?远程或本地?
* @param {string} sid 无说明文档,代码参数例子 'WADE_SID=83802938302029392-39303'
*/
openFile: function (path, sid) {
},
/**
* 读取SIM卡空卡序列号
*
* @param {function} callback 回调函数
* @param {string} callback.result 空卡序列号
*/
getCardSN: function (callback) {
this.getSimReaderConfig(function (deviceType, connectType, btnAddress) {
IpuMobile.getCardSN(callback, deviceType, connectType, {btnAddress: btnAddress});
});
},
/**
* 读取SIM卡ICCID信息
*
* @param {function} callback 回调函数
* @param {string} callback.result ICCID信息
*/
getICCID: function (callback) {
this.getSimReaderConfig(function (deviceType, connectType, btnAddress) {
IpuMobile.getICCID(callback, deviceType, connectType, {btnAddress: btnAddress});
});
},
/**
* 读取SIM卡IMSI信息
*
* @param {function} callback 回调函数
* @param {string} callback.result IMSI信息
*/
getIMSI: function (callback) {
this.getSimReaderConfig(function (deviceType, connectType, btnAddress) {
IpuMobile.getIMSI(callback, deviceType, connectType, {btnAddress: btnAddress});
});
}
};
})();
|