Android 게임 로그인

Google Play 게임즈 서비스 기능에 액세스하려면 로그인한 플레이어의 계정을 게임에서 제공해야 합니다. 이 문서에서는 게임에서 원활한 로그인 환경을 구현하는 방법을 설명합니다.

Play 게임즈 서비스 v2 SDK는 게임에 로그인하는 사용자의 수를 늘리고 개발을 더 쉽게 할 수 있도록 도와주는 여러 개선사항을 제공합니다.

  • 사용자를 위한 개선사항
    • 기본 계정을 선택하고 나면 사용자는 안내 메시지와 상호작용할 필요 없이 로그인하게 됩니다.
    • 사용자는 더 이상 Play 게임즈 서비스로 로그인하거나 새 계정을 만들기 위해 Play 게임즈 앱을 다운로드할 필요가 없습니다.
    • 이제 사용자는 단일 페이지에서 여러 게임의 Play 게임즈 서비스 계정을 관리할 수 있습니다.
  • 개발자를 위한 개선사항
    • 클라이언트 코드에서 더 이상 로그인 또는 로그아웃 흐름을 처리할 필요가 없습니다. 게임이 시작될 때 로그인이 자동으로 트리거되고 OS 설정에서 계정 관리가 처리되기 때문입니다.

새로운 클라이언트 통합

이 섹션에서는 Play 게임즈 서비스 로그인 v2와 새로운 클라이언트를 통합하는 방법을 보여줍니다.

종속 항목 추가

앱의 루트 수준 build.gradle 파일에 Play 게임즈 서비스 SDK 종속 항목을 추가합니다. Gradle을 사용하는 경우 다음과 같이 종속 항목을 추가하거나 업데이트할 수 있습니다.

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

프로젝트 ID 정의

Play 게임즈 서비스 SDK 프로젝트 ID를 앱에 추가하려면 다음 단계를 완료하세요.

  1. 앱의 AndroidManifest.xml 파일에서 <application> 요소에 다음 <meta-data> 요소 및 속성을 추가합니다.

    <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를 정의합니다. 게임 서비스 프로젝트 ID는 Google Play Console에서 설정 페이지의 게임 이름 아래에 있습니다.

  2. res/values/strings.xml 파일에서 문자열 리소스 참조를 추가하고 프로젝트 ID를 값으로 설정합니다. Google Play Console의 설정 페이지에서 게임 이름 아래에 프로젝트 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()
  }
);