import JsbSystem from "../../../mk/system/JsbSystem"; import LoadingBar from "../../component/LoadingBar"; import HotUpdatePanel from "../hotUpdate/HotUpdatePanel"; const { ccclass, property } = cc._decorator; @ccclass export default class Login extends cc.Component { @property(LoadingBar) private bar: LoadingBar = null; @property({ displayName: '加载文字', type: cc.Label }) private lbl_progress: cc.Label = null; @property({ displayName: '服务协议', type: cc.Label }) private lbl_server: cc.Label = null; @property({ displayName: '隐私协议', type: cc.Label }) private lbl_privacy: cc.Label = null; /** 加载进度 */ private process: number = 0; /** 更新状态 */ public updateState: UpdateState = 0; /** 热更脚本(onLoad应先于Login) */ public hotUpdatePanel: HotUpdatePanel = null; onLoad() { this.setProgress(0); } start() { this.init(); } update() { //如果更新没有结束,就不进入正常加载流程 if (this.updateState != UpdateState.UpdateFinish) { return; } if (this.process < 100) { this.process += 2; this.setProgress(this.process); } if (gData.loginData.loadResCompelete) { if (gData.appData.getDeviceInfoCompelete) { this.login(); gData.appData.getDeviceInfoCompelete = false; } else if (gData.gameData.dataFinish) {//登录流程完毕 if (gData.gameData.isNewPlayer()) { mk.ui.openPanel("module/login/agreementTip"); } else { mk.ui.openPanel("game/prefab/game"); } gData.gameData.dataFinish = false; } } else { gData.loginData.loadLocalRes(); } } /** 设置进度 */ private setProgress(current) { this.bar.setProgress(current); this.lbl_progress.string = "加载不消耗流量 " + current + "%"; } /** 初始化 */ public async init() { //获取微信id let wxAppId = JsbSystem.getWxAppId(); if (!!wxAppId) { gData.appData.appId = wxAppId; } //获取设备信息 JsbSystem.getDeviceInfo(); //获取强根版本需要sessionkey gData.loginData.init(); await this.checkForceUpate(); await this.checkHotUpdate(); mk.audio.init(); } //整包更新和新流程-------------------------------------------------------- /** 检测强制更新 */ public async checkForceUpate() { await this.getForceVersionInfo(); console.log("===[Login] checkHotUpdate ", gData.appData.needForceUpdate); if (gData.appData.needForceUpdate === 1) { } else { } } //发送请求整包更新 public async getForceVersionInfo() { console.log("===[Login] getForceVersionInfo发送请求整包更新") mk.console.log("===[Login] getForceVersionInfo", gData.loginData.uin,gData.loginData.sessionKey); let data: any = { 'version': gData.appData.appVersion, 'channel': gData.appData.tfChannel } data.timestamp = Math.floor(new Date().getTime() * 0.001) data.appVersion = gData.appData.appVersion; data.tfChannel = gData.appData.tfChannel; data.versioncfg = gData.appData.version; let encode = mk.encrypt.encrypt(JSON.stringify(data), gData.loginData.sessionKey, gData.loginData.sessionKey); let bodyData = { "uin": gData.loginData.uin, "encrypt": encode } let response = await mk.http.sendRequest("getForceVersionInfo", 'POST', JSON.stringify(bodyData), false, false) mk.console.logSingle("===[Login] getForceVersionInfo response", response); gData.appData.needForceUpdate = response.isForceUpdate; gData.appData.installVersion = response.version; gData.appData.installUrl = response.downloadAddress; gData.appData.updateDes = response.versionRemark; gData.appData.fixDes = response.bugRestoreRemark; } //热更新----------------------------------------------------------------- /** 检测热更新 */ public async checkHotUpdate() { //如果是强更则不进行热更判断 if (gData.appData.needForceUpdate === 1) { return; } //热更脚本交互 this.hotUpdatePanel = this.node.getComponent(HotUpdatePanel); if (!this.hotUpdatePanel) { console.error("===[login] 登录界面,没有挂载热更脚本"); this.updateState = UpdateState.UpdateFinish; } else { console.log("===[login] 登录界面,挂载热更脚本"); this.hotUpdatePanel.login = this; this.hotUpdatePanel.checkHotUpdate(); } } public login() { //初始化相关数据 mk.pool.init(gData.gameData.pools); //取消构造的时候自动初始化,手动初始化 mk.ad.init(); gData.appData.init(); gData.adData.init(); // gData.loginData.init(); console.log("[FC] gData.appData.appId", gData.appData.appId); //登录 gData.loginData.login(); } } /** 更新状态 */ export enum UpdateState { Check = 0, Updating = 1, UpdateFinish = 2, }