cc.Class({ /** * 收到JNI发上来的事件 * * @author Pyden * @date 2020-03-11 * @param {Object} eventData */ handleEvent (eventData) { /* eventData参数: * @param {String} sdkName * @param {String} eventKey * @param {Integer} code * @param {String} errorMsg * @param {Object} data */ /* 设备回调事件,eventKey如下: device_exit // 退出游戏 device_camera // 选择好了头像 eventData.data.filePath // 头像地址 */ let eventKey = eventData.eventKey; switch (eventKey) { case 'device_exit': { cc.game.end(); break; } case 'device_camera': { cc.game.emit('e_middle_device_camera_result', eventData); break; } case 'device_on_configuration_changed': { cc.game.emit('e_middle_device_on_configuration_changed', eventData.data); break; } default: break; } }, /** * 获取设备模块的配置信息 * * @author Pyden * @date 2020-03-23 * @returns {Object} * config.sdkName sdk名称 */ getConfig () { if (!this._config) { let gameConfig = G.MiddleMgr.getGameConfig(); if (gameConfig && gameConfig.device) { this._config = gameConfig.device; } } return this._config; }, /** * sdk名称。本模块只能有一个SDK * * @author Pyden * @date 2020-03-23 * @returns {String} */ getSdkName () { let config = this.getConfig() || {}; return config.sdkName; }, /** * 判断是否有某个APP device_isApplicationExist * * @author Pyden * @date 2020-03-11 * @param {String} appPkg 包名 * @returns {Boolean} */ isApplicationExist (appPkg) { return false; }, /** * 跳转到应用商店的指定应用页面 device_rateToMarketApp * * @author Pyden * @date 2020-03-11 * @param {String} appPkg 应用包名 * @param {String} marketPkg 商店应用包名 * @returns {Boolean} 返回值表示是否支持跳转 */ openMarketApp (appPkg, marketPkg) { return false; }, /** * 获取版本名称 device_getVersion * * @author Pyden * @date 2020-03-11 * @returns {String} */ getVersionName () { return G.MiddleMgr.sdkConfig.deviceVersion; }, /** * 获取版本码 device_getVersionCode * * @author Pyden * @date 2020-03-11 * @returns {Integer} */ getVersionCode () { return G.MiddleMgr.sdkConfig.deviceVersionCode; }, /** * 获取运营商信息 device_getOperator * 0 = unknown; 1 = 移动; 2 = 联通; 3 = 电信-1 = 无; 0 = 未知; 1 = wifi; 2 = 2g; 3 = 3g; 4 = 4g * * @author Pyden * @date 2020-03-11 * @returns {Integer} */ getOperator () { return 0; }, /** * 获取网络状况 device_getApnType * -1 = 无; 0 = 未知; 1 = wifi; 2 = 2g; 3 = 3g; 4 = 4g * * @author Pyden * @date 2020-03-11 * @returns {Integer} */ getApnType () { let networkType = cc.sys.getNetworkType(); if (networkType == 0) { networkType = -1; } return networkType; }, /** * 获取设备名称 device_getDeviceName * * @author Pyden * @date 2020-03-11 * @returns {Stirng} */ getDeviceName () { return '默认设备名称'; }, /** * 获取设备信息 device_getDeviceInfo * * @author Pyden * @date 2020-03-11 * @returns {Stirng} */ getDeviceInfo () { let deviceName = this.getDeviceName(); let os = cc.sys.os; let osVersion = cc.sys.osVersion; let windowPixelResolution = cc.sys.windowPixelResolution; let info = cc.js.formatStr( '%s|%s%s|%s*%s', deviceName, os, osVersion, parseInt(windowPixelResolution.width), parseInt(windowPixelResolution.height) ); return info; }, /** * 获取保存本地数据的文件地址 device_getUserDataSavePath * * @author Pyden * @date 2020-03-11 */ getUserDataSavePath () { if (!CC_JSB) { // 非native平台没有写入路径 return ''; } return jsb.fileUtils.getWritablePath(); }, /** * 获取硬件唯一标识 device_getUDID * * @author Pyden * @date 2020-03-11 * @returns {String} */ getUDID () { let writablePath = this.getUserDataSavePath(); if (!CC_JSB) { // 非native平台没有写入路径 // 需要给一个随机数生成udid并缓存下来 let randomNumber = cc.sys.localStorage.getItem('RANDOM_NUMBER'); if (randomNumber) { writablePath = randomNumber; } else { writablePath = Math.random() * new Date().getTime(); cc.sys.localStorage.setItem('RANDOM_NUMBER', writablePath); } } return MD5.hex(String(writablePath)); }, /** * 获取IMEI号 device_getIMEI * * @author Pyden * @date 2020-03-11 * @returns {String} */ getIMEI () { return 'simulator'; }, /** * 获取IDFA源串 * string.foramt("%s|%s|%s|%s|%s|%s", IMEI, AndroidID, OAID, MAC, IDFA, OpenUUID) * 安卓不传 IDFA, OpenUUID * iOS不传 IMEI, AndroidID, OAID * * @author Pyden * @date 2020-03-11 * @returns {String} */ getIDFA () { return ''; }, /** * 获取渠道号 device_getChannelId * * @author Pyden * @date 2020-03-11 * @returns {Integer} */ getChannelId () { return G.ChannelId; }, /** * 获取APP名称 device_getAppName * * @author Pyden * @date 2020-03-11 * @returns {String} */ getAppName () { if (G.MiddleMgr.sdkConfig.appName) { return G.MiddleMgr.sdkConfig.appName; } else { return '神手麻将'; } }, /** * 获取APP包名 * * @author Pyden * @date 2020-03-11 * @returns {String} */ getAppPackageName () { return 'web'; }, /** * 设置屏幕方向。1:横屏,2:竖屏,3根据用户朝向 device_setOrientation * * @author Pyden * @date 2020-03-11 * @param {Integer} orientation * @returns {Boolean} 返回值表示是否支持设置屏幕方向 */ setOrientation (orientation) { return false; }, /** * 拨打电话 device_callService * * @author Pyden * @date 2020-03-11 * @param {Integer} uid * @param {Stirng} phoneNumber 电话号码 * @returns {Boolean} 返回值表示是否支持拨打电话 */ callService (uid, phoneNumber) { window.location.href = 'tel:' + phoneNumber; return true; }, /** * 展示toast device_toast * * @author Pyden * @date 2020-03-11 * @param {String} msg 展示文案 * @returns {Boolean} 返回值表示是否支持展示toast */ toast (msg) { return false; }, /** * 拷贝字符串到剪切板 device_copyString * * @author Pyden * @date 2020-03-11 * @param {String} text * @returns {Boolean} 返回值表示是否拷贝成功 */ copyString (text) { return false; }, /** * 获取剪切板的复制内容 device_getPasteString * * @author Pyden * @date 2020-03-11 * @returns {String} 空字符串表示没有内容 */ getPasteString () { return ''; }, /** * 获取中间层持久化数据 device_getPackageInfoStringForKey * * @author Pyden * @date 2020-03-11 * @param {String} key * @param {String} defValue * @returns {String} */ getSharedPreferencesForKey (key, defValue) { let ret = cc.sys.localStorage.getItem(key); if (ret == undefined) { ret = defValue; } return ret; }, /** * 设置中间层持久化数据 device_setPackageInfoStringForKey * * @author Pyden * @date 2020-03-11 * @param {String} key * @param {String} value */ setSharedPreferencesForKey (key, value) { cc.sys.localStorage.setItem(key, value); }, /** * 拍照上传头像 device_camera * * @author Pyden * @date 2020-03-11 * @param {Integer} imageType 1是相册,2是拍照 * @returns {Boolean} 返回值表示是否支持 */ camera (imageType) { return false; } });