示例#1
0
    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;
    }
示例#2
0
    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;
    }
示例#3
0
    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;
    }