IEnumerator InitAppVersion() { var appVersionRequest = AssetBundleManager.Instance.RequestAssetFileAsync(UtilityBuild.AppVersionFileName); yield return(appVersionRequest); var streamingAppVersion = appVersionRequest.text; appVersionRequest.Dispose(); var appVersionPath = AssetBundleUtility.GetPersistentDataPath(UtilityBuild.AppVersionFileName); var persistentAppVersion = UtilityGame.SafeReadAllText(appVersionPath); Logger.Log(string.Format("streamingAppVersion = {0}, persistentAppVersion = {1}", streamingAppVersion, persistentAppVersion)); // 如果persistent目录版本比streamingAssets目录app版本低,说明是大版本覆盖安装,清理过时的缓存 if (!string.IsNullOrEmpty(persistentAppVersion) && UtilityBuild.CheckIsNewVersion(persistentAppVersion, streamingAppVersion)) { var path = AssetBundleUtility.GetPersistentDataPath(); UtilityGame.SafeDeleteDir(path); } UtilityGame.SafeWriteAllText(appVersionPath, streamingAppVersion); ChannelManager.instance.appVersion = streamingAppVersion; yield break; }
IEnumerator InitLocalVersion() { clientAppVersion = ChannelManager.instance.appVersion; var resVersionRequest = AssetBundleManager.Instance.RequestAssetFileAsync(UtilityBuild.ResVersionFileName); yield return(resVersionRequest); var streamingResVersion = resVersionRequest.text; resVersionRequest.Dispose(); var persistentResVersion = UtilityGame.SafeReadAllText(resVersionPath); if (string.IsNullOrEmpty(persistentResVersion)) { clientResVersion = streamingResVersion; } else { clientResVersion = UtilityBuild.CheckIsNewVersion(streamingResVersion, persistentResVersion) ? persistentResVersion : streamingResVersion; } UtilityGame.SafeWriteAllText(resVersionPath, clientResVersion); var persistentNoticeVersion = UtilityGame.SafeReadAllText(noticeVersionPath); if (!string.IsNullOrEmpty(persistentNoticeVersion)) { ChannelManager.instance.noticeVersion = persistentNoticeVersion; } else { ChannelManager.instance.noticeVersion = "1.0.0"; } Logger.Log(string.Format("streamingResVersion = {0}, persistentResVersion = {1}, persistentNoticeVersion = {2}", streamingResVersion, persistentResVersion, persistentNoticeVersion)); yield break; }
IEnumerator GetUrlListAndCheckUpdate(bool isInternalVersion) { if (isInternalVersion) { // 内部版本使用本地服务器更新 yield return(InternalGetUrlList()); } else { // 外部版本一律使用外网服务器更新 yield return(OutnetGetUrlList()); } // 检测大版本更新 #if UNITY_EDITOR // 编辑器下总是不进行大版本更新 needDownloadGame = false; #else if (isInternalVersion) { #if UNITY_ANDROID if (ChannelManager.instance.IsGooglePlay()) { // TODO:这里还要探索下怎么下载 needDownloadGame = false; Logger.LogError("No support for local server download game for GooglePlay now !!!"); } else { // 对比版本号更新 needDownloadGame = UtilityBuild.CheckIsNewVersion(clientAppVersion, serverAppVersion); } #elif UNITY_IPHONE // TODO:iOS下的本地下载要进一步探索,这里先不管 needDownloadGame = false; Logger.LogError("No support for local server download game for iOS now !!!"); #endif } else { // 外部版本对比版本号更新 needDownloadGame = UtilityBuild.CheckIsNewVersion(clientAppVersion, serverAppVersion); } #endif // 检测资源更新 if (isInternalVersion) { // 内部版本总是检测资源更新,避免开发过程中需要频繁升级资源版本号 needUpdateGame = true; } else { // 外部版本对比版本号更新 needUpdateGame = UtilityBuild.CheckIsNewVersion(clientResVersion, serverResVersion); } #if UNITY_CLIENT || LOGGER_ON System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.AppendFormat("SERVER_LIST_URL = {0}\n", URLSetting.SERVER_LIST_URL); sb.AppendFormat("LOGIN_URL = {0}\n", URLSetting.LOGIN_URL); sb.AppendFormat("REPORT_ERROR_URL = {0}\n", URLSetting.REPORT_ERROR_URL); sb.AppendFormat("NOTIFY_URL = {0}\n", URLSetting.NOTICE_URL); sb.AppendFormat("APP_DOWNLOAD_URL = {0}\n", URLSetting.APP_DOWNLOAD_URL); sb.AppendFormat("SERVER_RESOURCE_ADDR = {0}\n", URLSetting.SERVER_RESOURCE_URL); sb.AppendFormat("noticeVersion = {0}\n", ChannelManager.instance.noticeVersion); sb.AppendFormat("serverAppVersion = {0}\n", serverAppVersion); sb.AppendFormat("serverResVersion = {0}\n", serverResVersion); Logger.Log(sb.ToString()); #endif yield break; }