天天看點

Unity3d:GCloud SDK接入記錄,APK更新,資源更新,區服導航,網絡連接配接

啟動更新

版本線

Unity3d:GCloud SDK接入記錄,APK更新,資源更新,區服導航,網絡連接配接

app版本1,隻會更新app版本1下的資源版本線

程式更新隻走程式版本線,例如 2.0.0.0 的程式版本檢查更新時,伺服器将傳回 3.0.0.0 的可選更新

資源更新隻走所在程式版本下的資源線,例如 2.1.0.0 的資源版本檢查更新時,伺服器将傳回 2.3.0.0 的強制更新,而不會傳回 3.X 的版本,盡管 3.X 的版本比 2.1.0.0 高

強制更新

如果app版本号未找到或者app目前版本為普通不可用,走強制更新

可選更新

舉例:使用者自定義json定義可支援版本,例如手機上app版本是4.7.0.282,通路到伺服器上最新版本是8.0.0.0,在optionalUpdateVersions包含4.7.0.282執行可選

Unity3d:GCloud SDK接入記錄,APK更新,資源更新,區服導航,網絡連接配接

稽核版本

稽核版本用于新版本送出管道商(如 Apple App Store)稽核時使用,其意義有:

稽核版本對外網使用者不可見,即外網低版本不會更新到高版本的稽核版本

管道商體驗時不會被回退到外網最高版本

注意事項:

  1. 給AppStore是稽核版本,啟動更新時不會在正常外網正在營運版本找版本線
  2. 過了稽核,在GCloud背景中,可以選擇把稽核版本變為正式版本,後續更新稽核版本走營運版本線

灰階版本

灰階版本即在版本釋出時,先選取小規模使用者測試新版本,驗證後再全量釋出。

采用區服政策:用區服id來判斷使用者是否是灰階使用者,用戶端上報使用者選擇的區服id,配置的區服id就是灰階條件,在這個集合内就是灰階使用者。

在經曆登入前更新後,玩家選擇灰階服上線,再進行一次更新檢查,請求資訊時帶上區服id,使用者openID,得到灰階版本線資訊,再選擇更新

用戶端更新流程

Unity3d:GCloud SDK接入記錄,APK更新,資源更新,區服導航,網絡連接配接

啟動更新:遊戲啟動第一個場景,登入之前,主要的更新階段。

灰階更新:登入(選區)之後,輔助更新階段,經過此更新,指定灰階使用者可以使用特定的遊戲版本

啟動更新邏輯

  1. 首包拷貝:streamingAssetsPath目錄移動到persistentDataPath,要移動的檔案根據ABFileRelativePaths确定。

    Q:什麼時候觸發首包拷貝

    A:

1.VersionCode.bytes檔案,在每次自動轉表的時候自增1(建構版本強制要求使用自動轉表工具)
2.首包拷貝的含義解釋:安裝包第一次安裝時,資源都在應用空間,需要将資源拷貝到使用者空間
3. 這裡主要拷貝的是打好的AssetBundle。VersionCode在新安裝的版本中間是一個不重複的數值(如1340,說明建構了1340次)
4.在第一次安裝時,CurrentVersion的檔案是不存在的,而LatestVersion是以Resources.Load的方式讀的Assets/Resource下的檔案
5.是以CurrentVersion和LatestVersion不一緻而導緻首包拷貝,拷貝結束後儲存了一份CurrentVersion與LatestVersion一緻      
  1. 進行登入前app更新,為普通更新GCloudUpdateVersion。更新時要帶上目前app版本号,為IIPSUpdateConfig.GetVersionString()(),編輯器下寫死一個app版本測試,移動端從apk或者ipa裡配置讀版本号,這樣每次更新了app,確定版本号變動了
  2. GCloudUpdateVersion中OnNoticeNewVersionInfo得到版本資訊。強制或者可選,可選更新規則

    按順序依次判定

    目前比伺服器低,強制更新為true

    optionalUpdateVersions,可選更新清單包含目前app版本,為可選更新

    無論配置了什麼類型的更新,存在于ignoreUpdateVersions中的版本忽略更新

  3. 如果ios端跳轉app連結,如果apk端下載下傳完整或者增量apk包,下載下傳完後拉起安裝InstallApk
  4. GCloudUpdateVersion流程結束,進入資源更新流程GCloudUpdateResource。按照app更新後的app版本号,(如果未選擇更新,是之前老app版本号;更新後是新的版本号),再加上資源版号IIPSUpdateConfig.StrResVersion(這個檔案首次安裝沒有,會随着第一次更新下載下傳後,更新檔案,預設第一次請求會以"0.0.1.0"請求)
  5. GCloudUpdateResource中OnNoticeNewVersionInfo,如果GCloud背景使用者描述字元串包含OptionalUpdate,為可選更新。選擇更新後,下載下傳zip,然後會解壓,GCloud内部實作
  6. GCloudUpdateResource流程結束,進入到使用者選服登入
  7. 如果不是灰階服,直接進入遊戲。如果是灰階服

進行GCloudCheckVersion,灰階檢查後如果選擇更新,拉回到GCloudUpdateVersion,再帶上區服id,使用者openID進行灰階更新

區服導航

● 區服導航:區服導航,樹狀結構

● 區服狀态:區服的運作狀态(維護、良好、擁擠、爆滿等)

● 區服标簽:區服的一些标簽(新、熱、薦等)

區服狀态上報:據伺服器運作時線上人數和最大支援線上數動态調整區服狀态。

規則定義

角色資訊上報(Acc服務):要顯示為玩家最近登入的區服和角色資訊

Unity3d:GCloud SDK接入記錄,APK更新,資源更新,區服導航,網絡連接配接
Unity3d:GCloud SDK接入記錄,APK更新,資源更新,區服導航,網絡連接配接

流程

  1. 初始化配置,分為debug,preview,release3種服,每種服還分平台SvrRegion,初始化時還要帶上使用者OpenID,為了拉取到每個服上,角色資訊
public enum SvrRegion
    {
        ANDROID_WX = 1,
        IOS_WX,
        ANDROID_QQ,
        IOS_QQ,
        IOS_GUEST,
        TEST,
    }      
  1. 拉取樹RequestTdirAsync,得到每個葉子節點資訊,即伺服器資訊

網絡連接配接

  1. 初始化
ConnectorInitInfo connectInfo = new ConnectorInitInfo();
            connectInfo.MaxBufferSize = 102400;//(GCloudSDK2.0.7 or higher, it is recommended to use MaxSendMessageSize and MaxRecvMessageSize respectively)
            connectInfo.MaxSendMessageSize = 102400;
            connectInfo.MaxRecvMessageSize = 102400;
            connectInfo.EncMethod = EncryptMethod.Aes;
            connectInfo.KeyMakingMethod = KeyMaking.Server;
            //connectInfo.DH = "RawDH";
            connectInfo.Timeout = 10;
            connectInfo.ClearBufferWhenReconnect = false;
            _connector.Initialize(connectInfo);      
_connector.ConnectEvent += apolloConnectCallback;
               _connector.RelayConnectEvent += apolloReconnectCallback;
               _connector.DisconnectEvent += apolloDisconnectCallback;
               _connector.StateChangedEvent += OnStateChanged;      

繼續閱讀