遊戲已上架,重新發布新版本並在華為後臺設定強制更新,新版本釋出後強制更新不起作用
場景描述
遊戲已上架,因需求更新,我們想讓已安裝遊戲的玩家強制更新遊戲,但是釋出新版本後,強制更新不起作用,更新彈窗彈出後用戶點選“退出應用”,仍然能進入遊戲。
問題分析
我重新參考了華為官方指導文件:遊戲升級,文件總結為兩點:
- 如果遊戲選擇了強制升級,程式碼中必須要設定 AppUpdateClient.showUpdateDialog 的引數 mustBtnOne為true,否則將導致無法準確彈出強制升級視窗。
- 遊戲版本釋出時,在 AppGallery Connect 後臺中勾選“是否強制更新”。
對此,我自檢後發現後臺選擇了強制更新,但是 AppUpdateClient.showUpdateDialog
帶著疑問,我聯絡了華為技術支援(可提單聯絡)。技術回覆說現網文件中有個說明漏掉了(後續文件中會新增優化):
根據文件的程式碼,檢測到新版本後執行到 onUpdateInfo 方法處,返回帶有應用資訊的 intent 後,獲取 intent 攜帶的 compulsoryUpdateCancel 欄位,該欄位即為遊戲的新版本在提交發布時後臺是否勾選了強制更新。若為 false,表示沒有勾選強制更新,這時候不用做處理。若為 true,表示勾選了強制更新,需要開發者自行處理退出遊戲邏輯,這樣就能達到讓玩家強更更新的目的。
像我們的遊戲,就是因為這邊沒有自己做退出處理,所以才導致點選了“退出應用”還是進入了遊戲。
另外,華為技術支援還向我延伸說明了遊戲升級提示框裡按鈕的區別。
1. 若 AppUpdateClient.showUpdateDialog方法的引數 mustBtnOne 設定為 true,後臺勾選“強制更新”,此時更新框裡只有“立即更新”一個按鈕,實現強制更新的目的。
2. 若AppUpdateClient.showUpdateDialog方法的引數 mustBtnOne 設定為 true,後臺沒有勾選“強制更新”,此時更新框裡有“以後再說”和“立即更新”兩個按鈕,這種場景是非強制更新的。
3. 若
4. 若AppUpdateClient.showUpdateDialog方法的引數 mustBtnOne 設定為 false,後臺也沒有勾選“強制更新”,此時更新框裡有“以後再說”和“立即更新”兩個按鈕,這種場景也是非強制更新的。
問題解決
綜上,我可以把 AppUpdateClient.showUpdateDialog方法的引數 mustBtnOne 設定改為 true 或者新增判斷 compulsoryUpdateCancel 欄位以處理退出遊戲的邏輯,重新出包提交稽核後,問題解決。