public IEnumerator CheckUpdate(bool repairClient, StartupUI startUI) { m_svrVerInfo = null; //获取当前的版本 string fullUrl = DPlatform.GetCheckVersionUrl(repairClient); BLogger.Info("version check:{0}", fullUrl); WWWEx wwwEx = WWWEx.Init(15f); yield return(StartCoroutine(wwwEx.Request(fullUrl))); if (wwwEx.isTimeOut) { AssetVersionMgr.Instance.error = StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_CHECK_UPDATE_TIMEOUT); BLogger.Warning("url reueqest timeout: {0}", fullUrl); yield break; } WWW www = wwwEx.result; if (www.error != null) { BLogger.Warning("check version update error: " + www.error); string wwwerror = www.error; www.Dispose(); AssetVersionMgr.Instance.error = StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_CHECK_UPDATE_WWW_ERROR, wwwerror); yield break; } if (startUI != null) { startUI.ShowText(StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_GAME_ETNERING)); } Dictionary <string, object> verJson = (Dictionary <string, object>)MiniJSON.Json.Deserialize(www.text); if (verJson == null || verJson.Count == 0) { BLogger.Warning("parse version json data error: {0}", www.text); AssetVersionMgr.Instance.error = StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_CHECK_UPDATE_JSON_ERROR, 1); // DBugly.ReportException("json data error", "request error url:" + fullUrl, "parse version json data error: " + www.text); www.Dispose(); yield break; } try { m_svrVerInfo = ParseVerInfo(verJson); } catch (Exception e) { BLogger.Warning("parse ver info failed:{0}", e.ToString()); DBugly.ReportException("parse ver info", "request error url:" + fullUrl, "parse ver info failed: " + e.ToString()); AssetVersionMgr.Instance.error = StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_CHECK_UPDATE_JSON_ERROR, 2); m_svrVerInfo = null; } www.Dispose(); }
/// <summary> /// 准备预处理AB资源,从jar文件挪到data目录 /// </summary> /// <returns></returns> IEnumerator GameStartup() { //m_process.gameObject.SetActive(false); AssetBundlePrepare abPrepare = AssetBundlePrepare.Instance; ShowText(StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_GAME_ETNERING)); m_labelVersion.text = ""; yield return(StartCoroutine(abPrepare.CheckNeedPrepare())); ShowText(StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_GAME_ETNERING)); if (BaseConfigInfo.enableObbSplitMode) { if (ObbMgr.Instance.IsNeedDownloadObb()) { SceneManager.LoadScene("Scene_obbdownload"); yield break; } } var isReportPrepareEvent = false; var watchReport = new BTickWatcher(); if (!abPrepare.IsHaveErr() && abPrepare.NeedPrepare) { EventLogReport.Instance.ReportEvent(EventLogType.event_start_unpack); isReportPrepareEvent = true; } yield return(StartCoroutine(abPrepare.StartPrepareAb(this))); if (abPrepare.IsHaveErr()) { if (isReportPrepareEvent) { EventLogReport.Instance.ReportEvent(EventLogType.event_fail_unpack, abPrepare.error); } ShowConfirm(StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_PREPARE_FAILED, abPrepare.error), false, DodLib.DoQuit); yield break; } if (isReportPrepareEvent) { EventLogReport.Instance.ReportEvent(EventLogType.event_end_unpack, watchReport.ElapseTime()); } ///开始检测版本 AssetVersionMgr.Instance.ReadBaseInfo(); if (AssetVersionMgr.Instance.haveErr) { ShowConfirm( StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_ASSETVER_INIT_FAILED, AssetVersionMgr.Instance.error), false, DodLib.DoQuit); yield break; } DBugly.Init(BaseConfigInfo.PlatformName, AssetVersionMgr.Instance.assetVersion); // //统计检查版本成功还是失败 // PlatformUtil.StatisticsEventBegin("boot_update"); //获取版本号 string version = AssetVersionMgr.Instance.assetVersion; m_labelVersion.text = StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_VERSION_INFO, version); StartTickTitle(StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_CHECK_UPDATE)); AssetUpdater updater = AssetUpdater.Instance; yield return(StartCoroutine(updater.CheckUpdate(false, this))); StopTickTitle(); AssetVerInfo svrVerInfo = updater.svrVerInfo; if (svrVerInfo == null) { // PlatformUtil.StatisticsEventFailed("boot_update", "network"); ShowConfirm( StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_CHECK_VERSION_FAILED, AssetVersionMgr.Instance.error), false, RetryUpdate); yield break; } // PlatformUtil.StatisticsEventEnd("boot_update"); if (svrVerInfo.m_updateType == AssetUpdateType.UPDATE_NONE) { StartEnterGameScene(); } else if (svrVerInfo.m_updateType == AssetUpdateType.UPDATE_ASSET) { ///读取本地 AssetVersionMgr.Instance.LoadLocalAllAssetMd5(); //获取更新的大小 StartTickTitle(StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_CHECK_UPDATE_CONTENT)); yield return(StartCoroutine(AssetVersionMgr.Instance.DownloadLatestIndex(svrVerInfo.m_assetUrl))); yield return(StartCoroutine(AssetVersionMgr.Instance.BeginUpdateIndex(svrVerInfo.m_assetUrl))); StopTickTitle(); if (AssetVersionMgr.Instance.haveErr) { ShowConfirm(StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_CHECK_UPDATE_CONTENT_FAILED, AssetVersionMgr.Instance.error), false, RetryUpdate); yield break; } #if !UNITY_EDITOR if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork) { //直接下载 OnUpdateConfirmOK(); } else #endif ShowConfirm(StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_ASSET_UPDATE_INFO, AssetVersionMgr.Instance.GetUpdateFileCount(), GetDataSize(AssetVersionMgr.Instance.GetToUpdateSize())), true, OnUpdateConfirmOK, OnUpdateConfirmCancel); } else if (svrVerInfo.m_updateType == AssetUpdateType.UPDATE_PROGRAME) { if (string.IsNullOrEmpty(svrVerInfo.m_help)) { ShowConfirm(svrVerInfo.m_err, true, OnUpdateConfirmOK, OnUpdateConfirmCancel); } else { ShowConfirmIos(svrVerInfo.m_err, OnUpdateConfirmOK, () => { Application.OpenURL(svrVerInfo.m_help); }); } } else if (svrVerInfo.m_updateType == AssetUpdateType.UPDATE_ERROR) { ShowText(svrVerInfo.m_err); } else { ShowText(StartupTextConfigMgr.Instance.GetText(StartupTextDefine.ID_STARTUP_CHECK_UPDATE_JSON_DETAIL, svrVerInfo.m_updateType)); } }