前言:为了进一步增强用户的隐私及其多平台游戏体验,Play 游戏服务(PGS) 正在推出下一代玩家 ID,用户第一次玩游戏时,他们将始终被分配一个唯一的下一代玩家 ID,无论用户在什么设备或平台上玩游戏,该 ID 都将保持一致,但会因游戏而异。游戏启动时会自动触发登录,帐号管理处理也将包含在操作系统设置中(手机谷歌商店),因此客户端代码不再需要处理登录或退出流程。
minSdkVersion
为 19
或更高版本compileSdkVersion
为 28
或更高版本buildscript
和 allprojects
两个部分中添加 Google 的 maven 代码库和 maven 的中央代码库: buildscript {
repositories {
google()
mavenCentral()
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
app/build.gradle
)中: dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
AndroidManifest.xml
文件中,将以下
元素和属性添加到
元素,在 Google Play 管理中心的“配置”页面中的游戏名称下找到游戏服务项目 ID。
四、在 res/values/strings.xml
文件中,添加字符串资源引用,并将项目 ID 设置为值。在 Google Play 管理中心内,您可以在配置页面中的游戏名称下找到项目 ID。例如:
0000000000
Application
的 onCreate(..)
回调中初始化 Play 游戏 SDK。 import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
完成这一步:您连一行代码都不必编写,当您的游戏打开时,系统会自动建立与 Play 游戏服务的连接。会自动触发登录,系统会向玩家显示一个弹出式窗口表示欢迎,这时您的游戏就可以开始使用 Play 游戏服务 API 了.
注意:如果玩家从未在此设备上使用过 Google Play 游戏,系统会自动引导他们完成一次性设置操作,如使用 Play 游戏应用创建玩家资料
GamesSignInClient.isAuthenticated()
获取自动登录的结果。GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient((Activity) mContext);
gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
//自动登录结果
boolean isAuthenticated =
(isAuthenticatedTask.isSuccessful() &&
isAuthenticatedTask.getResult().isAuthenticated());
Log.d(LOG_TAG, "Play Games Services issuccess === " + isAuthenticatedTask.isSuccessful());
Log.d(LOG_TAG, "Play Games Services isAuthenticated === "+ isAuthenticatedTask.getResult().isAuthenticated());
if (isAuthenticated) {
// Continue with Play Games Services
Log.d(LOG_TAG, "Play Games Services login 成功");
//登录成功后获取 pgs 下一代玩家 id
PlayGames.getPlayersClient((Activity) mContext).getCurrentPlayer().addOnCompleteListener(mTask -> {
mPlayId = mTask.getResult().getPlayerId();
mDisplayName = mTask.getResult().getDisplayName();
Log.d(LOG_TAG, "g_playid---> " + mPlayId);
Log.d(LOG_TAG, "g_playname---> " + mDisplayName);
}
);
} 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().
Log.d(LOG_TAG, " ~ Play Games Services login fail ~ ");
GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient((Activity) mContext);
Log.d(LOG_TAG, "~ call signIn ~");
Task authenticationResultTask = gamesSignInClient.signIn();
boolean isAuth = (authenticationResultTask.isSuccessful() &&
authenticationResultTask.getResult().isAuthenticated());
if (isAuth) {
Log.d(LOG_TAG, "pgs login success"); } else {
Log.d(LOG_TAG, "pgs login fail");
}
}
});
注:在集成时遇到问题,可以发送邮件至官网 [email protected] 。
测试过程中没有显示 pgs 登录,①看下手机的google 商店账号是否是测试账号②是否取消或者拒绝过pgs登录,如果拒绝过需要手动调用登录(gamesSignInClient.signIn)才可拉起自动登录
集成后效果---->