google PGS 下一代id

前言:为了进一步增强用户的隐私及其多平台游戏体验,Play 游戏服务(PGS) 正在推出下一代玩家 ID,用户第一次玩游戏时,他们将始终被分配一个唯一的下一代玩家 ID,无论用户在什么设备或平台上玩游戏,该 ID 都将保持一致,但会因游戏而异。游戏启动时会自动触发登录,帐号管理处理也将包含在操作系统设置中(手机谷歌商店),因此客户端代码不再需要处理登录或退出流程

前提条件:确保 app 下的 build.gradlew 文件使用以下值👇🏻

  • minSdkVersion 为 19 或更高版本
  • compileSdkVersion 为 28 或更高版本

步骤如下👇🏻

一、项目的 root 目录下的 build.gradle 文件中,在 buildscript 和 allprojects 两个部分中添加 Google 的 maven 代码库和 maven 的中央代码库:

 buildscript {
    repositories {
      google()
      mavenCentral()
    }
  }

  allprojects {
    repositories {
      google()
      mavenCentral()
    }
  }

二、将 Play 游戏 SDK 的 Google Play 服务依赖项添加到模块的 Gradle build 文件

(通常为 app/build.gradle)中:

  dependencies {
    implementation "com.google.android.gms:play-services-games-v2:+"
  }

三、在应用的 AndroidManifest.xml 文件中,将以下 <meta-data> 元素和属性添加到 <application> 元素,在 Google Play 管理中心的“配置”页面中的游戏名称下找到游戏服务项目 ID。

<manifest>
  <application>
    <meta-data android:name="com.google.android.gms.games.APP_ID"
               android:value="@string/game_services_project_id"/>
  </application>
</manifest>

四、在 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>

五、在 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<AuthenticationResult> 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");
        }
            }
        });

完成集成

注:在集成时遇到问题,可以发送邮件至官网 pgs-games-sdk@google.com 。

测试过程中没有显示 pgs 登录,①看下手机的google 商店账号是否是测试账号②是否取消或者拒绝过pgs登录,如果拒绝过需要手动调用登录(gamesSignInClient.signIn)才可拉起自动登录

集成后效果---->​​​​​​​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥不可及zzz

我会用心写更多自己的经验。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值