Google Play 게임즈 서비스 기능에 액세스하려면 인증된 플레이어의 계정을 게임에서 제공해야 합니다. 이 문서에서는 게임에서 원활한 인증 환경을 구현하는 방법을 설명합니다.
Play 게임즈 서비스 v2 SDK는 게임에 인증된 사용자의 수를 늘리고 개발을 더 쉽게 할 수 있도록 도와주는 여러 개선사항을 제공합니다.
- 사용자를 위한 개선사항
- 기본 계정을 선택한 후 사용자는 프롬프트와 상호작용할 필요 없이 인증됩니다.
- 사용자는 더 이상 Play Games 서비스로 인증하거나 새 계정을 만들기 위해 Play Games 앱을 다운로드할 필요가 없습니다.
- 이제 사용자는 단일 페이지에서 여러 게임의 Play 게임즈 서비스 계정을 관리할 수 있습니다.
- 개발자를 위한 개선사항:
- 클라이언트 코드에서 더 이상 인증 또는 로그아웃 흐름을 처리할 필요가 없습니다. 게임이 시작될 때 로그인이 자동으로 트리거되고 OS 설정에서 계정 관리가 처리되기 때문입니다.
새로운 클라이언트 통합
이 섹션에서는 Play 게임즈 서비스 로그인 v2와 새로운 클라이언트를 통합하는 방법을 보여줍니다.
종속 항목 추가
앱의 루트 수준 build.gradle 파일에 Play 게임즈 서비스 SDK 종속 항목을 추가합니다. Gradle을 사용하는 경우 다음과 같이 종속 항목을 추가하거나 업데이트할 수 있습니다.
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
프로젝트 ID 정의
Play 게임즈 서비스 SDK 프로젝트 ID를 앱에 추가하려면 다음 단계를 완료하세요.
앱의
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에서 설정 페이지의 게임 이름 아래에 있습니다.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 {
// Show a sign-in button to ask players to authenticate. Clicking it should
// call GamesSignInClient.signIn().
}
});
자동 트리거 프로필 생성 방지
매니페스트 파일을 통해 자동 트리거 프로필 생성 프롬프트를 사용 중지할 수 있습니다. 따라서 Play 게임 서비스 프로필이 없는 사용자는 Play 게임 서비스 프로필을 만들라는 메시지가 표시되지 않고 게임을 계속 로드할 수 있습니다. 자세한 내용은 프로필 생성 옵션을 참고하세요.
이 기능을 사용하려면 다음 조건을 충족해야 합니다.
- 기기에 로그인된 Google 계정에 Play 게임 서비스 프로필이 없습니다.
- 게임이 Play Games 서비스 SDK
com.google.android.gms:play-services-games-v2:21.0.0이상과 통합되어 있습니다.
자동으로 트리거되는 프로필 생성 메시지를 방지하려면 다음 단계를 완료하세요.
AndroidManifest.xml파일에서<meta-data>요소에com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION태그를 추가하고<application>요소에 속성을 추가합니다.<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>이 플래그를 true로 설정하면 게임에서 프로필 생성 프로세스를 처리한다는 정보가 Play Games 서비스에 전달됩니다. 따라서 Play Games 서비스는 기존 Play Games 서비스 프로필이 없는 기기 사용자를 위한 프로필 생성 사용자 인터페이스를 자동으로 표시하지 않습니다.
Play 게임즈 서비스 API를 호출할 때
GamesClientStatusCodes.SIGN_IN_REQUIRED상태 코드는 Play 게임즈 서비스 프로필이 없어 사용자가 자동으로 인증될 수 없기 때문에 호출이 실패했음을 나타냅니다.이를 통해 Play 게임즈 서비스 프로필이 없는 사용자는 Play 게임즈 서비스 프로필을 만들라는 메시지가 즉시 표시되지 않고 구현된 인증 방법을 진행할 수 있습니다.
GamesSignInService.signin()를 호출하여 프로필 생성을 시작할 수 있습니다.import com.google.android.gms.games.PlayGames; ... // Get the achievements client using Play Games services. AchievementsClient achievementsClient = PlayGames.getAchievementsClient(getActivity()); achievementsClient.getAchievementsIntent() .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { int statusCode = ((ApiException) exception).getStatusCode(); if (statusCode == GamesClientStatusCodes.SIGN_IN_REQUIRED) { // SIGN_IN_REQUIRED: The user needs to sign in with Play Games Services. // Call GamesSignInService.signin() to prompt for // authentication at a suitable time which will trigger the // profile creation UI. // (e.g., after a tutorial). Use GamesSignInService.isAuthenticated() to check auth status. } } });
억제 태그를 추가한 후
logcat창을 사용하여 추가를 확인합니다.logcat출력에 다음과 유사한 메시지가 포함됩니다. '게임에서 자동 프로필 생성 프롬프트를 선택 해제했습니다 (매니페스트 사용)'