如需使用 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>
使用游戏的游戏服务项目 ID 作为值来定义字符串资源引用
@string/game_services_project_id
。您可以在 Google Play 管理中心的“配置”页面中的游戏名称下找到游戏服务项目 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 {
// Show a sign-in button to ask players to authenticate. Clicking it should
// call GamesSignInClient.signIn().
}
});
如果用户在游戏启动时选择不进行身份验证,建议您继续显示一个带有“Play 游戏”图标的按钮,或者向用户显示一个登录界面,其中包含一个带有“Play 游戏”图标的按钮作为身份验证选项之一。如果用户按下该按钮,系统便会尝试通过调用 GamesSignInClient.signIn()
来重新让用户进行身份验证。验证用户已通过身份验证后,您可以检索玩家 ID 以识别用户。例如:
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
// Get PlayerID with mTask.getResult().getPlayerId()
}
);