Android 遊戲登入

如果要存取 Google Play 遊戲服務功能,遊戲必須提供 已登入玩家的帳戶。本文件說明如何 在遊戲中提供順暢的登入體驗。

Play 遊戲服務第 2 版 SDK 提供多項改善功能,可增加登入遊戲的使用者人數,也能簡化開發作業:

  • 使用者改善功能:
    • 選取預設帳戶後,使用者不需 與提示互動
    • 使用者不再需要下載 Play 遊戲應用程式,即可使用 Play 遊戲服務登入或建立新帳戶。
    • 使用者現在可以管理多款遊戲的 Play 遊戲服務帳戶 顯示單一頁面
  • 開發人員改善功能:
    • 用戶端程式碼不再需要處理登入或登出流程 系統就會自動在遊戲開始時觸發帳戶管理功能 可在 OS 設定中處理
,瞭解如何調查及移除這項存取權。

新用戶端整合

本節說明如何透過 Play 遊戲服務執行新用戶端整合 登入第 2 版。

新增依附元件

在應用程式的根目錄層級加入 Play 遊戲服務 SDK 依附元件 build.gradle 檔案。如果您使用的是 Gradle,則可以新增或更新 依附元件如下:

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

定義專案 ID

如要在應用程式中加入 Play 遊戲服務 SDK 專案 ID,請完成 步驟如下:

  1. 在應用程式的 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>
    

    定義字串資源參照 @string/game_services_project_id 使用遊戲的遊戲服務專案 ID 做為值。你的遊戲服務 專案 ID。如要查看專案 ID,請前往 Configuration Google Play 管理中心。

  2. res/values/strings.xml 檔案中,新增字串資源參照 然後將專案 ID 設為專案 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

ApplicationonCreate(..) 回呼中初始化 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()
  }
);