/** * @author 何杰 * @date 2016-08-01 12:00:00 * @address www.yitong.com.cn * @mail hj@yitong.com.cn * @desc: 屹通客户端组件api */ var Fw = {}; Fw.device = {}; Fw.device.Device = function () { var userAgent = navigator.userAgent; //ios 事件队列 var eventQueue = []; return { //是否iOS设备 is_ios: userAgent.indexOf('iPhone') > -1 || userAgent.indexOf('iPad') > -1, //是否Android设备 is_android: userAgent.indexOf('Android') > -1, /** * ios * 注册事件 * @param code 事件编码 * @param options 参数 */ addEvent: function (code, options) { if (options && code) { eventQueue.push(JSON.stringify({ code: code, name: options })); } }, /** * ios * 原生调用,从队列中获取事件 * @returns {string} */ getEvent: function () { return eventQueue.length > 0 ? eventQueue.shift() : '0'; } }; } (); /** * 供第三方调用API */ Fw.device.api = function () { var device = Fw.device.Device; return { /** * @brief 获取经纬度 * "X_LINE"和 "Y_LINE"两个返回字段在Android5.0.6及以后才会出现 * */ handCodeGetLocation: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.callBack = fn; device.is_ios && device.addEvent("51", JSON.stringify(option)); device.is_android && GetInfoJs.getLocation(JSON.stringify(option)); }, /** * @brief 获取用户信息 */ getUserInfo: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.callback = fn; device.is_ios && device.addEvent("getUserInfo", JSON.stringify(option)); device.is_android && GetInfoJs.getUserInfo(JSON.stringify(option)); }, /** * @brief */ getCustNo: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("getCustNo", fn); device.is_android && GetInfoJs.getCustNo(fn); }, initTitle: function (option) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("initTitle", JSON.stringify(option)); device.is_android && GetInfoJs.initTitle(JSON.stringify(option)); }, setRightButton: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("setRightButton", JSON.stringify(fn)); device.is_android && GetInfoJs.setRightButton(JSON.stringify(fn)); }, setBackFun: function (option) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("goBack", JSON.stringify(option)); device.is_android && GetInfoJs.goBack(JSON.stringify(option)); }, getBackFun: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("getBackFun", fn); device.is_android && GetInfoJs.getBackFun(option); }, startRecordVoice: function (option) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("startRecordVoice", JSON.stringify(option)); device.is_android && GetInfoJs.startRecordVoice(); }, stopRecordVoice: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("stopRecordVoice", fn); device.is_android && GetInfoJs.stopRecordVoice(fn); }, getPhoneNo: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("getPhoneNo", fn); device.is_android && GetInfoJs.getPhoneNo(fn); }, /** *扫一扫 */ openScanPage: function (option) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("goToQrCode", JSON.stringify(option)); device.is_android && GetInfoJs.openScanPage(); }, /** *付款码 */ openPaymentCode: function (option) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("gotoPaymentCode", JSON.stringify(option)); device.is_android && GetInfoJs.openPaymentCode(JSON.stringify(option)); }, /** * 拨打电话 */ gotoSystemPhone: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("gotoSystemPhone", fn); device.is_android && GetInfoJs.gotoSystemPhone(fn); }, /** * 关闭当前页面 */ goBack: function (option) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("backPrevious", JSON.stringify(option)); device.is_android && GetInfoJs.goBack(); }, /** * 调用物理返回键 */ nativeBack: function () { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } option = {}; // device.is_ios && device.addEvent("getBackFun",JSON.stringify(option)); device.is_android && GetInfoJs.nativeBack(); }, /** * 地图导航 */ openMap: function (option) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("openMap", JSON.stringify(option)); device.is_android && GetInfoJs.openMap(JSON.stringify(option)); }, /** * 登录 */ gotoLoginCallback: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("goToLoginView", JSON.stringify(fn)); device.is_android && GetInfoJs.gotoLoginCallback(JSON.stringify(fn)); }, loginStatus: function (option) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("loginStatus", JSON.stringify(option)); device.is_android && GetInfoJs.loginStatus(JSON.stringify(option)); }, checkRecordVoicePermission: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } // device.is_ios && device.addEvent("getBackFun",JSON.stringify(option)); device.is_android && GetInfoJs.checkRecordVoicePermission(fn); }, openMenu: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } // device.is_ios && device.addEvent("getBackFun",JSON.stringify(option)); device.is_android && GetInfoJs.gotoCommonlyUsedMenu(fn); }, /** * @brief 分享 */ handCodeShare: function (param, fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.fn = fn; option.param = param; device.is_ios && device.addEvent("41", JSON.stringify(param)); device.is_android && GetInfoJs.showShare(JSON.stringify(option)); }, /** * @brief 拍照、相册 */ handCodeGetPhotos: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.fn = fn; device.is_ios && device.addEvent("41", JSON.stringify(param)); device.is_android && GetInfoJs.takePhotos(JSON.stringify(option)); }, /** * @brief 拍照 */ openCamera: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.fn = fn; // device.is_ios && device.addEvent("41",JSON.stringify(param)); device.is_android && GetInfoJs.openCamera(JSON.stringify(option)); }, /** * @brief 相册 */ photoAlbum: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.fn = fn; // device.is_ios && device.addEvent("41",JSON.stringify(param)); device.is_android && GetInfoJs.photoAlbum(JSON.stringify(option)); }, /** * @brief 复制到粘贴板 */ pasteStringToSystem: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("pasteStringToSystem", fn); device.is_android && GetInfoJs.pasteStringToSystem(fn); }, queryAppFamily: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } //TODO ios粘贴方法 device.is_android && GetInfoJs.queryAppFamily(fn); }, getHeaderImg: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } //TODO ios粘贴方法 device.is_android && GetInfoJs.getHeaderImg(fn); }, getSystemVersion: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("getVersionCode", fn); device.is_android && GetInfoJs.getSystemVersion(fn); }, getChooseCityInfo: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.callBack = fn; device.is_ios && device.addEvent("getChooseCityInfo", JSON.stringify(option)); device.is_android && GetInfoJs.getChooseCityInfo(JSON.stringify(option)); }, faceCheck: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("faceCheck", JSON.stringify(option)); device.is_android && GetInfoJs.faceCheck(JSON.stringify(fn)); }, /** * @brief 跳转VUE */ goVUEPage: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("goToAresPage", JSON.stringify(param)); device.is_android && GetInfoJs.goToAresPage(JSON.stringify(param)); }, /** * @brief 跳转制定页面 */ loadPath: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("loadPath", JSON.stringify(param)); device.is_android && GetInfoJs.loadPath(JSON.stringify(param)); }, /** * @brief 跳转VUE */ redirectPage: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("redirectPage", JSON.stringify(param)); device.is_android && GetInfoJs.redirectPage(JSON.stringify(param)); }, /** * @brief 积分接口 */ jifenGetCordDateInfo: function (fun) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var param = {}; param.fn = fun device.is_ios && device.addEvent("jifenGetCordDateInfo", JSON.stringify(param)); device.is_android && GetInfoJs.jifenGetCordDateInfo(JSON.stringify(param)); }, getEquipmentInfo: function (fun) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var param = {}; param.fn = fun device.is_ios && device.addEvent("getEquipmentInfo", JSON.stringify(param)); device.is_android && GetInfoJs.getEquipmentInfo(JSON.stringify(param)); }, getOnLineFaCard: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("getOnLineFaCard", JSON.stringify(param)); device.is_android && GetInfoJs.getOnLineFaCard(JSON.stringify(param)); }, /** * @brief 获取经纬度 * "longitude" 和 "latitude" 两个返回字段再Android5.0.6及以后才会出现 */ checkAndGetLocation: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.callBack = fn; device.is_ios && device.addEvent("checkAndGetLocation", JSON.stringify(option)); device.is_android && GetInfoJs.checkAndGetLocation2(JSON.stringify(option)); }, /** *开启截屏监听 */ startMonitoring: function () { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; device.is_ios && device.addEvent("startMonitoring", JSON.stringify(option)); device.is_android && GetInfoJs.startMonitoring(); }, /** *关闭截屏监听 */ endMonitoring: function () { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; device.is_ios && device.addEvent("endMonitoring", JSON.stringify(option)); device.is_android && GetInfoJs.endMonitoring(); }, /** *更新优惠券数量 */ updateCoupon: function () { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; device.is_ios && device.addEvent("updateCoupon", JSON.stringify(option)); device.is_android && GetInfoJs.updateCoupon(); }, /** *荣数用户检测 */ checkUserChangeOrNot: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("checkUserChangeOrNot", JSON.stringify(param)); device.is_android && GetInfoJs.checkUserChangeOrNot(JSON.stringify(param)); }, /** *跳转页面(届管数据) */ redirectPage: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("redirectPage", JSON.stringify(param)); device.is_android && GetInfoJs.redirectPage(JSON.stringify(param)); }, /** * 检测权限 */ checkPermission: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("checkPermission", JSON.stringify(param)); device.is_android && GetInfoJs.checkPermission(JSON.stringify(param)); }, /** * 申请权限 */ requestPermission: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("requestPermission", JSON.stringify(param)); device.is_android && GetInfoJs.requestPermission(JSON.stringify(param)); }, setPhoneCallStateListener: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("setPhoneCallStateListener", JSON.stringify(param)); device.is_android && GetInfoJs.setPhoneCallStateListener(JSON.stringify(param)); }, setAudioStreamType: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("setAudioStreamType", JSON.stringify(param)); device.is_android && GetInfoJs.setAudioStreamType(JSON.stringify(param)); }, showFloatWindow: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("showFloatWindow", JSON.stringify(param)); device.is_android && GetInfoJs.showFloatWindow(JSON.stringify(param)); }, getUserInfoForVideoCall: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("getUserInfoForVideoCall", JSON.stringify(param)); device.is_android && GetInfoJs.getUserInfoForVideoCall(JSON.stringify(param)); }, buriedPoint: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("buriedPoint", JSON.stringify(fn)); device.is_android && GetInfoJs.buriedPoint(JSON.stringify(fn)); }, zxkf_goToLogin: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("zxkf_goToLogin", JSON.stringify(fn)); device.is_android && GetInfoJs.zxkf_goToLogin(JSON.stringify(fn)); }, checkUnionPayAuthState: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("checkUnionPayAuthState", JSON.stringify(fn)); device.is_android && GetInfoJs.checkUnionPayAuthState(JSON.stringify(fn)); }, startQrPay: function () { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("startQrPay", ""); device.is_android && GetInfoJs.startQrPay(); }, openQRCodeCombineUnionPay: function (param) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("openQRCodeCombineUnionPay", ""); device.is_android && GetInfoJs.openQRCodeCombineUnionPay(param); }, /** * @brief 打开消息推送弹窗 */ openPushAlert: function (param, fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.callBack = fn; option.param = param; device.is_ios && device.addEvent("openPushAlert", JSON.stringify(param)); device.is_android && GetInfoJs.openPushAlert(JSON.stringify(option)); }, /** * @brief 检测个性化消息推荐开关 */ personalPushOpenType: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.callBack = fn; device.is_ios && device.addEvent("personalPushOpenType", JSON.stringify(option)); device.is_android && GetInfoJs.personalPushOpenType(JSON.stringify(option)); }, /** * @brief 检测消息推荐开关 */ checkPushSwitchStatus: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.callBack = fn; device.is_ios && device.addEvent("checkPushSwitchStatus", JSON.stringify(option)); device.is_android && GetInfoJs.checkPushSwitchStatus(JSON.stringify(option)) }, showTPwdKeyboard: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.callback = fn; option.len = "6"; option.type ="LPWD"; device.is_ios && device.addEvent("10", JSON.stringify(option)); device.is_android && KeyboardJs.showTPwdKeyboard(JSON.stringify(option)) }, /** * @brief 新授权 */ getNewAuthorization: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } var option = {}; option.fn = fn; device.is_ios && device.addEvent("getNewAuthorization", JSON.stringify(fn)); device.is_android && GetInfoJs.getNewAuthorization(JSON.stringify(fn)); // device.is_android && GetInfoJs.getNewAuthorization(JSON.stringify(option)); }, /** * @brief 新授权 */ downloadPDF: function (fn) { if (!device.is_ios && !device.is_android) { alert("请在ios/android设备上使用!"); return; } device.is_ios && device.addEvent("downloadPDF", JSON.stringify(fn)); device.is_android && GetInfoJs.downloadPDF(JSON.stringify(fn)) }, } } ();