隨著 Google Sign-In API 淘汰,我們將在 2026 年移除遊戲第 1 版 SDK。2025 年 2 月後,您將無法在 Google Play 上發布新整合 games v1 SDK 的遊戲。建議您改用 games v2 SDK。
雖然採用舊版遊戲第 1 版整合功能的現有遊戲仍可繼續運作幾年,但建議您從 2025 年 6 月開始遷移至第 2 版。
本指南適用於使用 Play 遊戲服務第 1 版 SDK。如需最新 SDK 版本的相關資訊,請參閱 v2 說明文件。
本指南將說明如何運用 Android 應用程式內的成就 API,在遊戲中解鎖並顯示成就。您可以在 com.google.android.gms.games
和 com.google.android.gms.games.achievements
等套件中取得 API。
事前準備
建議您先複習成就遊戲概念,這會對您很有幫助。
在使用成就 API 撰寫程式碼之前:
- 按照「設定 Google Play 服務 SDK」指南的說明安裝並設定應用程式,以便使用 Google Play 遊戲服務。
- 按照 Google Play 管理中心指南的說明操作,定義遊戲要解鎖或顯示的成就。
- 下載並詳閱 Android 範例頁面的成就程式碼範例。
- 熟悉「品質檢查清單」中所列的建議。
取得成就用戶端
遊戲必須先取得 AchievementsClient
物件,才能使用成就 API。您可以呼叫 Games.getAchievementClient()
方法,然後傳入活動和目前播放器的 GoogleSignInAccount
。如要瞭解如何擷取玩家帳戶資訊,請參閱「Android 遊戲登入」。
解鎖成就
如要解鎖成就,請呼叫 AchievementsClient.unlock()
方法,並傳遞成就 ID。
以下程式碼片段將展示應用程式如何解鎖成就:
Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .unlock(getString(R.string.my_achievement_id));
如果成就是「漸進式」類型的 (需要進行多個步驟才能解鎖的成就),請改為呼叫 AchievementsClient.increment()
。
以下程式碼片段將展示應用程式如何漸進式累計玩家成就:
Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .increment(getString(R.string.my_achievement_id), 1);
您不需要另外撰寫解鎖成就的程式碼,只要完成必要的步驟數量後,Google Play 遊戲服務會自動解鎖成就。
建議您在 strings.xml
檔案中定義成就 ID,遊戲就能按照資源 ID 參照成就。發出呼叫來更新及載入成就時,請採用最佳做法,避免超出 API 配額。
顯示成就
如要顯示玩家的成就,請呼叫 AchievementsClient.getAchievementsIntent()
取得 Intent
,建立預設的成就使用者介面。然後,您的遊戲就能藉由呼叫 startActivityForResult
顯示這個 UI 了。
以下程式碼片段說明應用程式如何顯示預設的成就使用者介面。在這個程式碼片段中,RC_ACHIEVEMENT_UI
代表遊戲用來當做要求代碼的任意整數。
private static final int RC_ACHIEVEMENT_UI = 9003; private void showAchievements() { Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .getAchievementsIntent() .addOnSuccessListener(new OnSuccessListener<Intent>() { @Override public void onSuccess(Intent intent) { startActivityForResult(intent, RC_ACHIEVEMENT_UI); } }); }
以下是預設成就 UI 的範例。
![](https://developer.android.google.cn/static/images/games/pgs/achievements_android.png?authuser=19&hl=zh-tw)