为了访问 Google Play 游戏服务的功能,您的游戏需要提供已登录玩家的帐户。本文档介绍如何在您的游戏中实现无缝登录体验。
Play 游戏服务 v2 SDK 带来了许多改进,这些改进增加了登录到您游戏的用户数量,并简化了开发过程。
- 面向用户的改进
- 选择默认帐户后,用户将登录,无需与提示进行交互。
- 用户不再需要下载 Play 游戏应用程序即可使用 Play 游戏服务登录或创建新帐户。
- 用户现在可以从单个页面管理多个游戏的 Play 游戏服务帐户。
- 面向开发者的改进
- 客户端代码不再需要处理登录或注销流程,因为登录会在游戏启动时自动触发,并且帐户管理将在操作系统设置中进行处理。
新的客户端集成
本部分介绍如何使用 Play 游戏服务登录 v2 进行新的客户端集成。
添加依赖项
将 Play 游戏服务 SDK 依赖项添加到您应用的根级 build.gradle
文件中。如果您使用的是 Gradle,可以按照以下步骤添加或更新依赖项。
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
定义项目 ID
要将 Play 游戏服务 SDK 项目 ID 添加到您的应用,请完成以下步骤。
在您应用的
AndroidManifest.xml
文件中,将以下<meta-data>
元素和属性添加到<application>
元素中。<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>
使用您的游戏的 Game services 项目 ID 作为值,定义字符串资源引用
@string/game_services_project_id
。您可以在 Google Play 管理中心的“配置”页面中,在您游戏名称下找到您的 Game services 项目 ID。在您的
res/values/strings.xml
文件中,添加字符串资源引用,并将您的项目 ID 设置为值。在 Google Play 管理中心,您可以在游戏名称下的“配置”页面中找到您的项目 ID。例如,<!-- res/values/strings.xml --> <resources> <!-- Replace 0000000000 with your game’s project id. Example value shown above. --> <string translatable="false" name="game_services_project_id"> 0000000000 </string> </resources>
初始化 SDK
在您应用的 Application
类中的 onCreate(..)
回调中初始化 Play 游戏 SDK。
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
获取登录结果
当您的游戏启动时,它将始终尝试登录用户。要对用户进行身份验证,您必须验证用户是否成功登录,然后获取用户的玩家 ID。
要验证登录尝试,请调用 GamesSignInClient.isAuthenticated()
并使用 addOnCompleteListener
检索结果。例如,
GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
boolean isAuthenticated =
(isAuthenticatedTask.isSuccessful() &&
isAuthenticatedTask.getResult().isAuthenticated());
if (isAuthenticated) {
// Continue with Play Games Services
} else {
// Disable your integration with Play Games Services or show a
// login button to ask players to sign-in. Clicking it should
// call GamesSignInClient.signIn().
}
});
如果用户在游戏启动时选择不登录,您也可以选择继续显示带有 Play 游戏图标的按钮,并且如果用户按下按钮,则尝试通过调用 GamesSignInClient.signIn()
再次登录用户。
验证用户已登录后,您可以检索玩家 ID 以标识用户。例如,
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
// Get PlayerID with mTask.getResult().getPlayerId()
}
);