如果要存取 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,請完成 步驟如下:
在應用程式的
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 管理中心。在
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
在 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()
}
);