1. 程式人生 > 其它 >遊戲已上架,重新發布新版本並在華為後臺設定強制更新,新版本釋出後強制更新不起作用

遊戲已上架,重新發布新版本並在華為後臺設定強制更新,新版本釋出後強制更新不起作用

場景描述

遊戲已上架,因需求更新,我們想讓已安裝遊戲的玩家強制更新遊戲,但是釋出新版本後,強制更新不起作用,更新彈窗彈出後用戶點選“退出應用”,仍然能進入遊戲。

問題分析

我重新參考了華為官方指導文件:遊戲升級,文件總結為兩點:

  1. 如果遊戲選擇了強制升級,程式碼中必須要設定 AppUpdateClient.showUpdateDialog 的引數 mustBtnOne為true,否則將導致無法準確彈出強制升級視窗。
  2. 遊戲版本釋出時,在 AppGallery Connect 後臺中勾選“是否強制更新”。

對此,我自檢後發現後臺選擇了強制更新,但是 AppUpdateClient.showUpdateDialog

的引數 mustBtnOne,我傳的是 false。但是我仍有一點不解,既然 SDK 做的升級彈窗中有“退出應用”的按鈕,為什麼點選之後,實際沒有退出呢?

帶著疑問,我聯絡了華為技術支援(可提單聯絡)。技術回覆說現網文件中有個說明漏掉了(後續文件中會新增優化):

根據文件的程式碼,檢測到新版本後執行到 onUpdateInfo 方法處,返回帶有應用資訊的 intent 後,獲取 intent 攜帶的 compulsoryUpdateCancel 欄位,該欄位即為遊戲的新版本在提交發布時後臺是否勾選了強制更新。若為 false,表示沒有勾選強制更新,這時候不用做處理。若為 true,表示勾選了強制更新,需要開發者自行處理退出遊戲邏輯,這樣就能達到讓玩家強更更新的目的。

像我們的遊戲,就是因為這邊沒有自己做退出處理,所以才導致點選了“退出應用”還是進入了遊戲。

另外,華為技術支援還向我延伸說明了遊戲升級提示框裡按鈕的區別。

1. 若 AppUpdateClient.showUpdateDialog方法的引數 mustBtnOne 設定為 true,後臺勾選“強制更新”,此時更新框裡只有“立即更新”一個按鈕,實現強制更新的目的。

2. 若AppUpdateClient.showUpdateDialog方法的引數 mustBtnOne 設定為 true,後臺沒有勾選“強制更新”,此時更新框裡有“以後再說”和“立即更新”兩個按鈕,這種場景是非強制更新的。

3. 若

AppUpdateClient.showUpdateDialog方法的引數 mustBtnOne 設定為 false,後臺勾選“強制更新”,此時更新框裡有“退出應用”和“立即更新”兩個按鈕,這種場景需要開發者自行做退出遊戲邏輯(就是我們遊戲這個案例),實現強制更新的目的。

4. 若AppUpdateClient.showUpdateDialog方法的引數 mustBtnOne 設定為 false,後臺也沒有勾選“強制更新”,此時更新框裡有“以後再說”和“立即更新”兩個按鈕,這種場景也是非強制更新的。

問題解決

綜上,我可以把 AppUpdateClient.showUpdateDialog方法的引數 mustBtnOne 設定改為 true 或者新增判斷 compulsoryUpdateCancel 欄位以處理退出遊戲的邏輯,重新出包提交稽核後,問題解決。