Beispiel #1
0
        public static async Task <bool> IsGameVersionCodeEqual()
        {
            string versionCodeInner = GlobalConfigComponent.Instance.GlobalProto.VersionCodeInner;

            Log.Debug($"versionCodeInner:{versionCodeInner}");
            string versionCodeOuter = GlobalConfigComponent.Instance.GlobalProto.VersionCodeOuter;

            Log.Debug($"versionCodeOuter:{versionCodeOuter}");
            string versionCode = versionCodeOuter;

            if (ETModel.Define.isInnetNet)
            {
                versionCode = versionCodeInner;
            }
            UnityWebRequestAsync webRequestAsync = ComponentFactory.Create <UnityWebRequestAsync>();

            try
            {
                //下载VersionCode
                var   webRequestGameVersion = webRequestAsync.DownloadAsync(versionCode);
                await webRequestGameVersion;
                var   versionCodeText = webRequestAsync.Request.downloadHandler.text;
                ZLog.Info($"versionCode:{versionCodeText}");
                webRequestAsync.Dispose();
                //比较VersionCode
                ZLog.Info($"ETModel.Define.versionGameCode:{ETModel.Define.versionGameCode}");
                if (versionCodeText.Equals(ETModel.Define.versionGameCode))
                {
                    ZLog.Info($"versionGameCode Equal");
                    return(true);
                }
                else
                {
                    ZLog.Info($"versionGameCode Not Equal");
                    //while (!VideoUtil.videoFinished)
                    //    await UniRx.Async.UniTask.DelayFrame(1);
                    UIComponent uiComponent        = Game.Scene.GetComponent <UIComponent>();
                    UI          uiLoading          = uiComponent.Get(UIType.UILoading);
                    var         uiLoadingComponent = uiLoading.GetComponent <UILoadingComponent>();
                    //弹提示.
                    var trans = uiLoadingComponent.view.transform.Find("ConfirmWindowVersion");
                    var tip   = new UIUpdateVersionTip(trans);
                    tip.OnConfirm = () =>
                    {
                        ETModel.Define.QuitApplication();
                    };
                    return(false);
                }
            }
            catch (Exception e)
            {
                if (e.Message.Contains("request error"))
                {
                    webRequestAsync.Dispose();
                    ZLog.Info("load VersionGameCode err", e.Message);
                    return(false);
                }
            }
            return(false);
        }
Beispiel #2
0
        /// <summary>
        /// 返回是否需要下载
        /// </summary>
        /// <returns></returns>
        public async Task<bool> LoadInfo()
        {
            isNetNotReach = false;
            string versionUploadSelfResUrl = GlobalConfigComponent.Instance.GlobalProto.VersionUploadSelfResUrl;
            Log.Debug($"versionUploadSelfResUrl:{versionUploadSelfResUrl}");
            if (ETModel.Define.isInnetNet)
            {
                versionUploadSelfResUrl = GlobalConfigComponent.Instance.GlobalProto.VersionUploadSelfResUrl_InnerNet;
                Log.Debug($"VersionUploadSelfResUrl_InnerNet:{versionUploadSelfResUrl}");
            }
            UnityWebRequestAsync webRequestSelfVersionAsync = ComponentFactory.Create<UnityWebRequestAsync>();
            UnityWebRequestAsync webRequestAsync = ComponentFactory.Create<UnityWebRequestAsync>();
            string versionText = string.Empty;
            try
            {
                //下载外层资源文件夹版本,即父目录
                var webRequestSelfResVersionTask = webRequestSelfVersionAsync.DownloadAsync(versionUploadSelfResUrl);
                await webRequestSelfResVersionTask;
                ZLog.Info($"webRequestSelfResVersionText:{webRequestSelfVersionAsync.Request.downloadHandler.text}");
                ETModel.Define.ParentResABDirectory = webRequestSelfVersionAsync.Request.downloadHandler.text;
                ZLog.Info($"ParentDirectory:{ETModel.Define.ParentResABDirectory}");
                webRequestSelfVersionAsync.Dispose();
                //下载bundle流程
                string versionUrl = GlobalConfigComponent.Instance.GlobalProto.GetUrl() + "StreamingAssets/" + "Version.txt";
                if (ETModel.Define.IsABNotFromServer)
                {
                    versionUrl = GetUrlWithPlatform(ETModel.Define.SelfResourceServerIpAndPort + "/") + "StreamingAssets/" + "Version.txt";
                }
                Log.Debug($"versionUrl:{versionUrl}");
                var webRequestTask = webRequestAsync.DownloadAsync(versionUrl);
                await webRequestTask;
                versionText = webRequestAsync.Request.downloadHandler.text;
                webRequestSelfVersionAsync.Dispose();
            }
            catch (Exception e)
            {
                if (e.Message.Contains("request error"))
                {
                    webRequestSelfVersionAsync.Dispose();
                    webRequestAsync.Dispose();
                    ZLog.Info("load Version err", e.Message);
                    Define.isUseStreamingAssetRes = true;
                    OnFileServerNotReach(e.Message);
                    return false;
                }
            }
            ZLog.Info($"versionText:{versionText}");
            if (!versionText.StartsWith("{"))
            {
                this.VersionConfig = null;
                return false;
            }
            this.VersionConfig = JsonHelper.FromJson<VersionConfig>(versionText);
            //Log.Debug(JsonHelper.ToJson(this.VersionConfig));


            if (isNetNotReach)//文件服务器没开启
            {
                //var timeTask = DelayFrame();
                //this.TagDownloadFinish();
                //await timeTask;
                return false;
            }
            else //成功的事情
            {
                VersionConfig localVersionConfig;
                // 对比本地的Version.txt
                string versionPath = Path.Combine(PathHelper.AppHotfixResPath, "Version.txt");
                if (File.Exists(versionPath))
                {
                    localVersionConfig = JsonHelper.FromJson<VersionConfig>(File.ReadAllText(versionPath));
                }
                else
                {
                    versionPath = Path.Combine(PathHelper.AppResPath4Web, "Version.txt");

                    using (UnityWebRequestAsync request = ComponentFactory.Create<UnityWebRequestAsync>())
                    {
                        try
                        {
                            await request.DownloadAsync(versionPath);
                            localVersionConfig = JsonHelper.FromJson<VersionConfig>(request.Request.downloadHandler.text);
                        }
                        catch (System.Exception e)
                        {
                            Log.Debug(e.ToString());
                            localVersionConfig = null;
                        }
                    }
                }

                if (localVersionConfig != null)
                {
                    // 先删除服务器端没有的ab
                    foreach (FileVersionInfo fileVersionInfo in localVersionConfig.FileInfoDict.Values)
                    {
                        if (this.VersionConfig.FileInfoDict.ContainsKey(fileVersionInfo.File))
                        {
                            continue;
                        }
                        string abPath = Path.Combine(PathHelper.AppHotfixResPath, fileVersionInfo.File);

                        if(File.Exists(abPath))File.Delete(abPath);
                    }
                }


                // 再下载
                foreach (FileVersionInfo fileVersionInfo in this.VersionConfig.FileInfoDict.Values)
                {
                    FileVersionInfo localVersionInfo;
                    if (localVersionConfig != null && localVersionConfig.FileInfoDict.TryGetValue(fileVersionInfo.File, out localVersionInfo))
                    {
                        if (fileVersionInfo.MD5 == localVersionInfo.MD5)
                        {
                            continue;
                        }
                    }

                    if (fileVersionInfo.File == "Version.txt")
                    {
                        continue;
                    }

                    this.bundles.Enqueue(fileVersionInfo.File);
                    this.TotalSize += fileVersionInfo.Size;
                }
                DownloadInfo.TotalSize = TotalSize;

                //if (this.bundles.Count == 0)
                //{
                //	return;
                //}

                //Log.Debug($"need download bundles: {this.bundles.ToList().ListToString()}");
                return true;
                //await Down();
            }
        }
Beispiel #3
0
        public static async Task <bool> IsGameVersionCodeEqual()
        {
            string versionCodeInner = GlobalConfigComponent.Instance.GlobalProto.VersionCodeInner;

            Log.Debug($"versionCodeInner:{versionCodeInner}");
            string versionCodeOuter = GlobalConfigComponent.Instance.GlobalProto.VersionCodeOuter;

            Log.Debug($"versionCodeOuter:{versionCodeOuter}");
            string versionCode = versionCodeOuter;

            if (ETModel.Define.isInnetNet)
            {
                versionCode = versionCodeInner;
            }
            UnityWebRequestAsync webRequestAsync = ComponentFactory.Create <UnityWebRequestAsync>();

            try
            {
                //下载VersionCode
                var   webRequestGameVersion = webRequestAsync.DownloadAsync(versionCode);
                await webRequestGameVersion;
                var   versionCodeText = webRequestAsync.Request.downloadHandler.text;
                Log.Info($"versionCode:{versionCodeText}");
                webRequestAsync.Dispose();
                //比较VersionCode
                Log.Info($"ETModel.Define.versionGameCode:{ETModel.Define.versionGameCode}");
                if (versionCodeText.Equals(ETModel.Define.versionGameCode))
                {
                    Log.Info($"versionGameCode Equal");
                    return(true);
                }
                else
                {
#if FOR_JIAOJIE_2021_9_22
#else
                    return(true);
#endif
                    Log.Info($"versionGameCode Not Equal");
                    //just send a message out is enough. let someone do the job happily
                    Game.EventSystem.Run(EventIdType.BigVersionCheckFailure);
                    return(false);

                    //while (!VideoUtil.videoFinished)
                    //    await UniRx.Async.UniTask.DelayFrame(1);
                    //UIComponent uiComponent = Game.Scene.GetComponent<UIComponent>();
                    //UI uiLoading = uiComponent.Get(UIType.UILoading);
                    //var uiLoadingComponent = uiLoading.GetComponent<UILoadingComponent>();
                    ////弹提示.
                    //var trans = uiLoadingComponent.view.transform.Find("ConfirmWindowVersion");
                    //var tip = new UIUpdateVersionTip(trans);
                    //tip.OnConfirm = () =>
                    //{
                    //    ETModel.Define.QuitApplication();
                    //};
                }
            }
            catch (Exception e)
            {
                if (e.Message.Contains("request error"))
                {
                    webRequestAsync.Dispose();
                    Log.Info("load VersionGameCode err", e.Message);
#if FOR_JIAOJIE_2021_9_22
#else
                    return(true);
#endif
                    return(false);
                }
            }
#if FOR_JIAOJIE_2021_9_22
#else
            return(true);
#endif
            return(false);
        }