using UnityEngine; using System.Collections; using System.IO; using FairyGUI; using MiniJSON; using UnityEngine.Networking; using taurus.unity; using System.Text; using System; using taurus.client; public class VerCheck : MonoBehaviour { GComponent _version_view; public static VerCheck Instance { get; private set; } public securityConnection conn; public bool isGFF = false; public bool isDXYGFF = true; void Awake() { Instance = this; } // Use this for initialization void Start() { GameApplication.Instance.isAndroid64bit = IsAndroid64bit(); CreateVersionView(); StartCoroutine(CheckNet()); } internal void ResetGame() { CreateVersionView(); StartCoroutine(__WaitReset()); } IEnumerator __WaitReset() { var _luaClient = GameApplication.Instance.GetComponent(); UnityEngine.Object.Destroy(_luaClient); System.GC.Collect(); FontManager.Clear(); UIPackage.RemoveAllPackages(); ResourcesManager.DestroyAll(); CreateVersionView(); yield return null; StartCoroutine(CheckNet()); } void CreateVersionView() { ResourcesManager.ReadAssetConfig("base/embed"); UIPackage.AddPackage("base/embed/ui/Hotupdate"); if (_version_view != null) _version_view.Dispose(); _version_view = null; _version_view = UIPackage.CreateObjectFromURL("ui://Hotupdate/Version").asCom; GRoot.inst.AddChildAt(_version_view,0); _version_view.width = GRoot.inst.width; _version_view.height = GRoot.inst.height; _version_view.x = (GRoot.inst.width - _version_view.width) / 2; Debug.LogError(Application.persistentDataPath); } public bool IsAndroid64bit() { #if UNITY_ANDROID && !UNITY_EDITOR if (IntPtr.Size == 8) { return true; } return false; #else return false; #endif } IEnumerator CheckNet() { string json_data = string.Empty; isDXYGFF= false; isGFF = false; string init_url = "http://8.148.219.235:19898/NewFK/config/init2_1.json"; if (isGFF==false&&isDXYGFF==false) { } else { if (isGFF) { int rc = AppVest.init("8ef91e7e799b5851a8ce810aae0c697c", "U5ayF4voVvRh1ElqBIVUCR9dSFskPGvCkfreFxdxzi39hoU0faqZWjFzC90Cta50egaQatCbPxm6XTlvi2+o++PrSozoZ+HUUY0y8tBloMWaOYQX59SAhjA/DyIDHJgGbE1I"); if (rc != 0) { // Debug.LogError("init failed"); ShowTip("GF init failed!", () => { StartCoroutine(CheckNet()); }); } // Debug.LogError("init successful"); conn.ip = ""; conn.port = 0; int rc1 = AppVest.getServerIPAndPort(ref conn, "", 5021); if (rc1 != 0) { ShowTip("getServerIPAndPort failed!", () => { StartCoroutine(CheckNet()); }); yield break; } } else { string key = "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"; int rc = DxyVest.Start(key);//AppVest.init("553c12676eb80b82183e0944df97cd19", "K8N/nk3cAxhGo7Oy0yoP/Ye5jcQUaMf+8+AutonLIoCXTbHXSHJ/D8W3/iIBHJq/4SABnAF7RvIeNRnF+x+wjB6cB1TEwIUviviQlofNvM4qJFLH55ON85n2pFBhSGW3qLF/"); if (rc != 150) { Debug.LogError("wwwwwwwwwwwwwwwwwwwwwww init failed"); ShowTip("GF init failed!", () => { StartCoroutine(CheckNet()); }); } // Debug.LogError("init successful"); conn.ip = "127.0.0.1"; conn.port = 37878; //int rc1 = AppVest.getServerIPAndPort(ref conn, "", 8077); //if (rc1 != 0) //{ // ShowTip("getServerIPAndPort failed!", () => // { // StartCoroutine(CheckNet()); // }); // yield break; //} } init_url = "http://" + conn.ip + ":" + conn.port + "/NewFK/config/init2_1.json"; Debug.LogError("init_url : " + init_url); } // Debug.LogError("开始下载资源===>>>"); Debug.LogError(init_url); //Debug.LogError("init_url============================ "+ init_url); float downTimeOut = 5; using (WWW request1 = new WWW(init_url)) { float timeOut = Time.time; float process = request1.progress; while (request1!=null && request1.isDone==false) { //Debug.LogError("wwwwwwwwwwwwwwwwwww11111111111111111111111"); if(processdownTimeOut) { ShowTip("配置文件下载失败,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); yield break; } yield return null; } yield return request1; // Debug.LogError("request1.error"+request1.error); if (string.IsNullOrEmpty(request1.error)) { //Debug.LogError("wwwwwwwwwwwwwwwww222222222222222222222222"); json_data = request1.text; //优化 GameApplication.Instance.GameInfo = json_data; Hashtable json = Json.Deserialize(json_data) as Hashtable; //json["pack_url"] = "http://8.134.59.224:8909/NewFKtest"; Hotupdate.PackUrl = (string)json["pack_url"]; Hashtable _plat_data = null; #if UNITY_IPHONE _plat_data = json["iOS"] as Hashtable; #endif #if UNITY_ANDROID _plat_data = json["Android"] as Hashtable; #endif #if UNITY_STANDALONE _plat_data = json["Win"] as Hashtable; #endif var check = _plat_data[string.Format("check{0}", GameApplication.AppVersion.ToString())]; if (check != null && (bool)check) { GameApplication.HideSdk = true; GameApplication.Instance.accountTest = false; } Version server_version = new Version((string)_plat_data["version"]); if (!GameApplication.HideSdk) { if (GameApplication.AppVersion.max_version < server_version.max_version || (GameApplication.AppVersion.max_version == server_version.max_version && GameApplication.AppVersion.min_version < server_version.min_version)) { ShowTip("您版本需要更新!", () => { #if UNITY_ANDROID StartCoroutine(DownApp((string)_plat_data["appurl"], server_version.ToString())); #else DeleteOldPack(); Application.OpenURL((string)_plat_data["appurl"]); Application.Quit(); #endif }); yield break; } } Voice.VoiceUpload = json["voice_upload_url"] as string; Voice.VoiceDownload = json["voice_download_url"] as string; //GameApplication.PackVersion = server_version.pack_version; if (!GameApplication.Instance.buildApp) { GameApplication.AppVersion.FillData(server_version); _version_view.Dispose(); GameApplication.Instance.StartGame(); } else { StartCoroutine(CheckAssetConfig(server_version)); } } else { ShowTip("版本检索失败,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); //yield break; } } } IEnumerator CheckAssetConfig(Version server_version) { GObject v_tex_info = _version_view.GetChild("tex_info"); Version local_version = Hotupdate.GetLocalVersion(string.Empty); ArrayList asset_config_list = null; string asset_config_text = null; if (local_version == null) { string ac_url = ""; if (isGFF == false) ac_url = string.Format("{0}/config/asset_config{1}.json", Hotupdate.PackUrl, server_version.ToString()); else ac_url = string.Format("http://{0}/NewFK/config/asset_config{1}.json", conn.ip + ":" + conn.port, server_version.ToString()); Debug.Log(ac_url); float downTimeOut = 5; using (var request = new WWW(ac_url)) { float timeOut = Time.time; float process = request.progress; while (request != null && request.isDone == false) { if (process < request.progress) { timeOut = Time.time; process = request.progress; } if (Time.time - timeOut > downTimeOut) { ShowTip("连接超时导致游戏配置下载异常,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); yield break; } yield return null; } yield return request; if (string.IsNullOrEmpty(request.error)) { asset_config_text = request.text; asset_config_list = Json.Deserialize(asset_config_text) as ArrayList; if (asset_config_list == null) { ShowTip("连接错误导致游戏配置下载异常,请检查您的网络设置!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } // v_tex_info.text = "正在检查资源。。。"; GSlider _pd = _version_view.GetChild("pb_progress").asSlider; _pd.value = 0; if (!Directory.Exists(ResourcesManager.PACK_PATH)) { Directory.CreateDirectory(ResourcesManager.PACK_PATH); } string copyVersionPath = Path.Combine(Application.streamingAssetsPath, "version.txt"); #if UNITY_IPHONE string copyVersionString = ""; if (File.Exists(copyVersionPath)) { copyVersionString = File.ReadAllText(copyVersionPath).Trim(); } else { ShowTip("本地缓存版本加载失败", () => { File.WriteAllText(Path.Combine(ResourcesManager.PACK_PATH, "version.txt"), "1.0.0"); StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } #endif #if UNITY_ANDROID UnityWebRequest copyRequest = UnityWebRequest.Get(copyVersionPath); yield return copyRequest.SendWebRequest(); if (copyRequest.isNetworkError || copyRequest.isHttpError) { /* ShowTip("本地缓存版本加载失败", () => {*/ File.WriteAllText(Path.Combine(ResourcesManager.PACK_PATH, "version.txt"), "1.0.0"); StartCoroutine(CheckAssetConfig(server_version)); //}); yield break; } string copyVersionString = copyRequest.downloadHandler.text.Trim(); #endif bool isSame = copyVersionString.Equals(server_version.ToString()); if (isSame) { string copyZipPath = Path.Combine(Application.streamingAssetsPath, "Pack.byte"); #if UNITY_IPHONE Byte[] zipData; if (File.Exists(copyZipPath)) { zipData = File.ReadAllBytes(copyZipPath); } else { ShowTip("本地缓存压缩包加载失败", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } /* if (zipData.LongLength < 1024) { ShowTip("本地缓存压缩包加载失败", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; }*/ string zipString = Path.Combine(Application.persistentDataPath, "Pack.byte"); File.WriteAllBytes(zipString, zipData); #endif #if UNITY_ANDROID UnityWebRequest copyZipRequest = UnityWebRequest.Get(copyZipPath); yield return copyZipRequest.SendWebRequest(); if (copyZipRequest.isNetworkError || copyZipRequest.isHttpError) { ShowTip("本地缓存压缩包加载失败", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } byte[] zipData = copyZipRequest.downloadHandler.data; string zipString = Path.Combine(Application.persistentDataPath, "Pack.byte"); File.WriteAllBytes(zipString, zipData); #endif IFilePack zip = null; zip = new FilePack20(zipString, PackMode.Read); zip.UnPackFileSyn(ResourcesManager.PACK_PATH); while (!zip.Complete) { _pd.value = zip.Progress*100; yield return null; } StartCoroutine(CheckAssetConfig(server_version)); yield break; } else { File.WriteAllText(Path.Combine(ResourcesManager.PACK_PATH, "version.txt"), copyVersionString); StartCoroutine(CheckAssetConfig(server_version)); yield break; } } else { ShowTip("游戏资源下载失败,请检查您的网络设置!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } } } else if (local_version.ContainAll(server_version)) { string ac_url=""; if(isGFF==false) ac_url = string.Format("{0}/config/asset_config{1}.json", Hotupdate.PackUrl, server_version.ToString()); else ac_url = string.Format("http://{0}/NewFK/config/asset_config{1}.json", conn.ip + ":" + conn.port, server_version.ToString()); // Debugger.LogError("CheckAssetConfig===>>>"); // Debugger.LogError(ac_url); float downTimeOut = 5; using (var request = new WWW(ac_url)) { float timeOut = Time.time; float process = request.progress; while (request != null && request.isDone == false) { if (process < request.progress) { timeOut = Time.time; process = request.progress; } if (Time.time - timeOut > downTimeOut) { ShowTip("连接超时导致游戏配置下载异常,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); yield break; } yield return null; } yield return request; if (string.IsNullOrEmpty(request.error)) { asset_config_text = request.text; asset_config_list = Json.Deserialize(asset_config_text) as ArrayList; if (asset_config_list == null) { ShowTip("连接错误导致游戏配置下载异常,请检查您的网络设置!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } // v_tex_info.text = "正在检查资源。。。"; GSlider _pd = _version_view.GetChild("pb_progress").asSlider; _pd.value = 0.0; bool ver_check = false; StartCoroutine(VersionUpdateCheck(asset_config_list, (progress, finish) => { _pd.value = progress * 100f; ver_check = finish; }, v_tex_info)); while (!ver_check) { yield return null; } string arv = string.Format("{0}asset_config{1}.json", ResourcesManager.PACK_PATH, server_version.ToString()); File.WriteAllText(arv, asset_config_text, System.Text.Encoding.UTF8); string rv = ResourcesManager.PACK_PATH + "version.txt"; File.WriteAllText(rv, server_version.ToString(), System.Text.Encoding.UTF8); } else { ShowTip("游戏资源下载失败,请检查您的网络设置!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } } }else { // string arv = string.Format("{0}asset_config{1}.json", ResourcesManager.PACK_PATH, server_version.ToString()); string arv =ResourcesManager.PACK_PATH+"asset_config"+server_version.ToString()+".json"; //Debug.LogError("ARV===>>>" + arv); try { asset_config_text = File.ReadAllText(arv); asset_config_list = Json.Deserialize(asset_config_text) as ArrayList; foreach (Hashtable tem in asset_config_list) { string b_path = "base/" + tem["name"]; ResourcesManager.ReadAssetConfig(b_path); } } catch (Exception s) { Debug.LogError(s.ToString()); ShowTip("游戏资源损坏,请重新安装新包!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } //IEnumerator enumerator = asset_config_list.GetEnumerator(); //try //{ // while (enumerator!=null && enumerator.MoveNext()) // { // Hashtable hashtable = (Hashtable)enumerator.Current; // string base_path = "base/" + hashtable["name"].ToString(); // ResourcesManager.ReadAssetConfig(base_path); // yield return null; // } //} //finally //{ // IDisposable disposable; // if ((disposable = (enumerator as IDisposable)) != null) // { // disposable.Dispose(); // } //} } GameApplication.AppVersion.FillData(server_version); v_tex_info.text = "正在加载资源请稍后。。"; //ResourcesManager.Init(); yield return null; _version_view.Dispose(); GameApplication.Instance.StartGame(); } /// /// 检查基本更新包 /// /// /// /// /// IEnumerator VersionUpdateCheck(ArrayList asset_config_list, System.Action onback, FairyGUI.GObject tip) { Version local_version = Version.DEFUALT; for(int i=0;i< asset_config_list.Count; ++i) { var tem = asset_config_list[i] as Hashtable; //if (GameApplication.HideSdk) //{ // if (!tem.ContainsKey("check")) continue; // if (!(bool)tem["check"]) continue; //} string b_path = "base/" + tem["name"].ToString(); Hotupdate version_update = new Hotupdate(b_path + "/", local_version, new Version((string)tem["ver"])); version_update.AssetName = b_path; version_update.HideDetail = true; #if UNITY_ANDROID && !UNITY_EDITOR //if (GameApplication.Instance.isAndroid64bit==false) //{ // if (tem["name"].ToString()=="base_script") // { // version_update.isBuild32lua = true; // } //} #endif version_update.SetTipCallback((text,callback)=> { ShowTip(text, callback); }); version_update.LoadAsset(); while (!version_update.Done) { onback(version_update.Progress, false); tip.text = version_update.TextTip; yield return null; } ResourcesManager.ReadAssetConfig(b_path); } onback(1, true); } #if UNITY_ANDROID IEnumerator DownApp(string appurl,string version) { var v_tex_info = _version_view.GetChild("tex_info"); v_tex_info.text = "正在下载新的安装包(0KB/0KB)"; var _pd = _version_view.GetChild("pb_progress").asSlider; var request = new BestHTTP.HTTPRequest(new System.Uri(appurl)); request.EnableTimoutForStreaming = false; request.UseStreaming = true; request.IsKeepAlive = true; request.Send(); var filePath = Application.persistentDataPath + "/update" + version + ".apk"; if (File.Exists(filePath)) { File.Delete(filePath); } FileStream stream = null; request.OnProgress = (originalRequest, downloaded, downloadLength) => { v_tex_info.text = string.Format("正在下载新的安装包({0}KB/{1}KB)", downloaded / 1024, downloadLength / 1024); _pd.value = (downloaded / (float)downloadLength) * 100; var fragments = originalRequest.Response.GetStreamedFragments(); if (fragments != null) { if (stream == null) { stream = File.Create(filePath); } foreach(byte[] buffer in fragments) { stream.Write(buffer, 0, buffer.Length); } } }; while (request.State < BestHTTP.HTTPRequestStates.Finished) { yield return null; } yield return new WaitForSeconds(1); stream.Dispose(); request.OnProgress = null; if (request.State == BestHTTP.HTTPRequestStates.Finished && request.Response.IsSuccess) { DeleteOldPack(); PlatformAndroid.Instance.UpdateApp(filePath); } else { ShowTip("请检查您的网络设置!", () => { StartCoroutine(DownApp(appurl, version)); }); } } #endif public void ShowTip(string text, System.Action callback) { var ctr_state = _version_view.GetController("state"); ctr_state.selectedIndex = 1; _version_view.GetChild("tex_tip").text = text; _version_view.GetChild("btn_ok").onClick.Set(() => { ctr_state.selectedIndex = 0; if (callback != null) callback(); }); } /// /// 移除本地缓存包 /// public static void DeleteOldPack() { string dir = ResourcesManager.RES_PATH; string rv = dir + "version.txt"; if (File.Exists(rv)) File.Delete(rv); if (Directory.Exists(dir)) Directory.Delete(dir, true); } }