/// <summary> /// 加载服务器的版本号信息 /// </summary> /// <param name="versionManifestUrl"></param> /// <param name="finishCallback"></param> /// <returns></returns> public IEnumerator LoadRemoteVersionCode(string versionManifestUrl, Action <string> failedCallback, Action <ResponseVersionManifestData> finishCallback) { // 请求远程最新版本信息 if (versionManifestUrl.Contains("?")) { versionManifestUrl += "&__cdn_asset_version__=" + (DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1))).TotalSeconds; } else { versionManifestUrl += "?__cdn_asset_version__=" + (DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1))).TotalSeconds; } WWW www = new WWW(versionManifestUrl); yield return(www); if (!string.IsNullOrEmpty(www.error)) { CLogger.LogError("VersionMgr::LoadRemoteVersionCode() - request remote_version.manifest error: " + versionManifestUrl + " " + www.error); if (failedCallback != null) { CLogger.Log("VersionMgr::LoadRemoteVersionCode() - Request version.manifest failed. Please try again!"); failedCallback(www.error); } www.Dispose(); yield break; } // 解析远程最新版本信息 _remoteVerCode = new BaseVersionData(); ResponseVersionManifestData manifestData = null; try { manifestData = JsonUtility.FromJson <ResponseVersionManifestData>(www.text); _remoteVerCode.Version = manifestData.version; } catch (Exception e) { CLogger.LogError("VersionMgr::LoadRemoteVersionCode() - parse version.manifest exception:" + e.Message); if (failedCallback != null) { CLogger.Log("VersionMgr::LoadRemoteVersionCode() - Request version.manifest failed. Please try again!"); failedCallback(e.Message); } www.Dispose(); yield break; } manifestData = manifestData != null ? manifestData : new ResponseVersionManifestData(); CLogger.Log("VersionMgr::LoadRemoteVersionCode() - LoadRemoteVersionCode: " + _remoteVerCode.Version); www.Dispose(); www = null; // 加载本地缓存版本文件信息 if (_localCacheVerDataMgr == null) { LoadLocalCacheVersionData(); } if (finishCallback != null) { finishCallback(manifestData); } }
public bool LoadLocalVersionCode() { BaseVersionData localVersion = new BaseVersionData(); string localVerFilePath = FileUtils.LocalResRootPath + HotUpdateDefs.kPackageVersionFile; bool isCorveringInstallation = false; if (File.Exists(localVerFilePath)) { localVersion.Version = JsonUtility.FromJson <ResponseVersionManifestData>(File.ReadAllText(localVerFilePath)).version; CLogger.Log("VersionMgr::LoadLocalVersionCode() - Load local version code: " + localVersion.Version); } var txt = Resources.Load(HotUpdateDefs.kPackageVersionFile); if (txt == null) { CLogger.LogError("VersionMgr::LoadLocalVersionCode() - 缺少包版本文件:Resources/version.manifest!!!"); return(false); } BaseVersionData packageVersion = new BaseVersionData(); packageVersion.Version = JsonUtility.FromJson <ResponseVersionManifestData>(txt.ToString()).version; CLogger.Log("VersionMgr::LoadLocalVersionCode() - Load package version code: " + packageVersion.Version); if ((packageVersion.Major > localVersion.Major) || (packageVersion.Major == localVersion.Major && packageVersion.Minor > localVersion.Minor) || (packageVersion.Major == localVersion.Major && packageVersion.Minor == localVersion.Minor && packageVersion.Revision > localVersion.Revision)) { // 删除本地热更新的文件缓存 DeleteAllLocal(); FileUtils.Instance.CheckDirExistsForFile(localVerFilePath); File.WriteAllText(localVerFilePath, JsonUtility.ToJson(new ResponseVersionManifestData() { version = packageVersion.Version })); _localVerCode = packageVersion; isCorveringInstallation = true; } else if (packageVersion.Major < localVersion.Major) { // 玩家安装了2.0.1的版本后又覆盖安装了1.0.1的版本会出现这种情况,应该删除本地缓存热更大版本 DeleteAllLocal(); _localVerCode = packageVersion; isCorveringInstallation = true; } else { _localVerCode = localVersion; } Resources.UnloadAsset(txt); PlayerPrefs.SetInt("isCorveringInstallation", isCorveringInstallation ? 1 : 0); CLogger.Log("VersionMgr::LoadLocalVersionCode() - Client version code: " + _localVerCode.Version); //CDebugInfo debug_info = GameObject.Find("UIRoot/Canvas/Debug").GetComponent<CDebugInfo>(); //debug_info.m_HotUpdateVersion.text = "HUVer: " + _localVerCode.Version; return(true); }
public bool Equals(BaseVersionData other) { return(Version == other.Version); }