本指南介绍如何在 Android 应用中使用成就 API 来解锁和显示游戏中的成就。这些 API 位于 com.google.android.gms.games
和 com.google.android.gms.games.achievements
软件包中。
开始之前
如果您尚未这样做,建议您查看 成就游戏概念。
在开始使用成就 API 进行编码之前
- 请按照 设置 Google Play 服务 SDK 指南中的说明,安装并设置您的应用以使用 Google Play 游戏服务。
- 按照 Google Play 管理中心指南 中的说明,定义您希望游戏解锁或显示的成就。
- 下载并在 Android 示例页面 中查看成就代码示例。
- 熟悉 质量检查清单 中描述的建议。
获取成就客户端
要开始使用成就 API,您的游戏必须首先获取 AchievementsClient
对象。您可以通过调用 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 的示例。