/* 中间层接口规范: 1、各个Middle 仅父类写注释,子类不写注释; 2、各个Middle的子类 里的方法排序要和 父类 保持一致; 3、java 里的方法排序要和 Middle js 保持一致; 4、中间结果的方法,放到 MiddleMgr 中; */ cc.Class({ init () { G.MiddleDevice = new (require('MiddleDevice'))(); G.MiddleAuth = new (require('MiddleAuth'))(); G.MiddlePay = new (require('MiddlePay'))(); G.MiddleAD = new (require('MiddleAD'))(); G.MiddleUpdate = new (require('MiddleUpdate'))(); G.MiddleBalance = new (require('MiddleBalance'))(); }, handleEventJson (eventJson) { let eventData = JSON.parse(eventJson); this.handleEvent(eventData); }, /** * 收到JNI发上来的事件 * * @author Pyden * @date 2020-03-11 * @param {Object} eventData */ handleEvent (eventData) { G.LogUtils.warn('MiddleMgr handleEvent', eventData); /* eventData参数: * @param {String} module * @param {String} eventKey * @param {Integer} code * @param {String} errorMsg * @param {Object} data */ let moduleName = eventData.module; switch (moduleName) { case 'device': { G.MiddleDevice.handleEvent(eventData); break; } case 'auth': { G.MiddleAuth.handleEvent(eventData); break; } case 'pay': { G.MiddlePay.handleEvent(eventData); break; } case 'ad': { G.MiddleAD.handleEvent(eventData); break; } case 'update': { G.MiddleUpdate.handleEvent(eventData); break; } case 'balance': { G.MiddleBalance.handleEvent(eventData); break; } default: break; } }, //* ************* 公共方法 ************* *// /** * 获取脚本号 * * @author Ture * @date 2019-04-23 * @returns {Integer} */ getResVersion () { return G.RES_VERSION; }, /** * 获取游戏版本号(含脚本号) * * @author Ture * @date 2019-04-23 * @returns {String} */ getVersion () { let apkVer = G.MiddleDevice.getVersionName(); let resVer = this.getResVersion(); let ret = cc.js.formatStr('%s.%s', apkVer, resVer); return ret; }, /** * 获取运营商名称 * * @author Ture * @date 2019-04-23 * @returns {String} */ getOperatorName () { let map = {'1': '移动', '2': '联通', '3': '电信'}; let operator = G.MiddleDevice.getOperator(); operator = operator == undefined ? 0 : operator; let ret = map[operator] == undefined ? '未知' : map[operator]; return ret; }, /** * 获取当前网络名称 * * @author Ture * @date 2019-04-23 * @returns {String} */ getApnTypeName () { let map = {'-1': '无网络', '1': 'WiFi', '2': 'G', '3': '2/3G', '4': '4G'}; let apn = G.MiddleDevice.getApnType(); apn = apn == undefined ? 0 : apn; let ret = map[apn] == undefined ? '未知' : map[apn]; return ret; }, /** * 是否在白名单内 * * @author libo * @date 2019-08-08 * @param {Integer} uid 用户uid * @returns {Boolean} */ isWhiteList (uid) { return false; }, /** * 获取UDID * * @author Pyden * @date 2020-02-13 * @returns {String} */ getUDID () { let originUDID = G.MiddleDevice.getUDID(); // 增加调试的UUID后缀,目的是调试注册账号 if (G.OPEN_DEBUG) { let debugUUID = G.DebugMgr.getValue(JMC.DEBUG_KEY.DEBUG_UUID) || ''; if (debugUUID > 0) { return originUDID + '_t' + debugUUID; } } return originUDID; }, /** * 获取UUID * * @author Pyden * @date 2020-02-13 * @returns {String} */ getUUID () { let originUUID = G.MiddleAuth.getUUID(); // 增加调试的UUID后缀,目的是调试注册账号 if (G.OPEN_DEBUG) { let debugUUID = G.DebugMgr.getValue(JMC.DEBUG_KEY.DEBUG_UUID) || ''; if (debugUUID > 0) { return originUUID + '_t' + debugUUID; } } return originUUID; }, /** * 获取IDFA(加密后) * cc.js.formatStr('%s|%s|%s|%s|%s|%s', imeiMd5, androidIdMd5, oaid, mac, idfaIos, openUuidIos); * * @author Pyden * @date 2020-05-08 * @returns */ getIDFAEncode () { let idfa = G.MiddleDevice.getIDFA(); let list = idfa.split('|'); let imei = list[0]; let androidId = list[1]; let oaid = list[2]; let mac = list[3]; let idfaIos = list[4]; let openUuidIos = list[5]; let imeiMd5 = ''; if (imei && imei.length > 0) { imeiMd5 = MD5.hex(imei); } let androidIdMd5 = ''; if (androidId && androidId.length > 0) { androidIdMd5 = MD5.hex(androidId); } if (oaid == undefined) { oaid = ''; } if (mac == undefined) { mac = ''; } if (idfaIos == undefined) { idfaIos = ''; } if (openUuidIos == undefined) { openUuidIos = ''; } let ret = cc.js.formatStr('%s|%s|%s|%s|%s|%s', imeiMd5, androidIdMd5, oaid, mac, idfaIos, openUuidIos); return ret; }, /** * 获取游戏配置 * * @author Pyden * @date 2020-03-20 */ getGameConfig () { return { ad: { list: [{name: '所有广告', sdkName: 'AllAd'}] }, auth: { list: [{name: 'Web授权', sdkName: 'Web', authType: JMC.AUTHORIZE_TYPE.NORMAL}] }, balance: { sdkName: 'WebBalance' }, device: { sdkName: 'WebDevice' }, pay: { list: [] }, update: { sdkName: 'WebUpdate' } }; }, getMiddleInfoList () { let list = [ cc.js.formatStr('版本名称: %s', G.MiddleDevice.getVersionName()), cc.js.formatStr('版本Code: %s', G.MiddleDevice.getVersionCode()), cc.js.formatStr('代码版本: %s', G.APP_VERSION), cc.js.formatStr('资源版本: %s', G.RES_VERSION), cc.js.formatStr('配置版本: %s', G.CONF_VERSION), cc.js.formatStr('混淆码: %s', G.HX_CODE), cc.js.formatStr('运营商: %s', G.MiddleMgr.getOperatorName()), cc.js.formatStr('网络状态: %s', G.MiddleMgr.getApnTypeName()), cc.js.formatStr('设备信息: %s', G.MiddleDevice.getDeviceInfo()), cc.js.formatStr('隐藏文件夹路径: %s', G.MiddleDevice.getUserDataSavePath()), cc.js.formatStr('UDID: %s', G.MiddleMgr.getUDID()), cc.js.formatStr('UUID: %s', G.MiddleMgr.getUUID()), cc.js.formatStr('IMEI: %s', G.MiddleDevice.getIMEI()), cc.js.formatStr('IDFA源串: %s', G.MiddleDevice.getIDFA()), cc.js.formatStr('IDFA加密: %s', G.MiddleMgr.getIDFAEncode()), cc.js.formatStr('渠道号: %s', G.MiddleDevice.getChannelId()), cc.js.formatStr('游戏名称: %s', G.MiddleDevice.getAppName()), cc.js.formatStr('游戏包名: %s', G.MiddleDevice.getAppPackageName()), cc.js.formatStr('是否支持实名认证: %s', G.MiddleAuth.isSupportRealName()), cc.js.formatStr('是否支持打开实名认证: %s', G.MiddleAuth.isSupportOpenRealNameAlert()), cc.js.formatStr('是否从游戏中心启动: %s', G.MiddleAuth.isLaunchFromCenter()), cc.js.formatStr('是否支持版本更新: %s', G.MiddleUpdate.isSupportUpdate()) ]; return list; } });