GPGS 세팅 / 오류 해결

 

유니티 2019.2.19f1

GPGS 0.10.07

 

GPGS 패키지 깃허브 링크
https://github.com/playgameservices/play-games-plugin-for-unity/tree/master/current-build

 

단계 1 : 유니티 키스토어 생성

더보기

1. 프로젝트 세팅에서 KeystoreManager 클릭

2. Create New -> AnyWhere 눌러서 경로 지정. 프로젝트 최상위 경로로 설정해둔 뒤, 백업해두자!

3. 표시된 부분 입력한 뒤, Add Key 눌러준다. 

4. 자동으로 패스워드가 입력된다. 유니티 프로젝트를 다시 실행하면 패스워드는 다시 입력해야한다.

 

단계 2 : 임시 APK 업로드

더보기

업로드 인증서를 사용하기 위해서는 APK를 한번 올려줘야합니다.

 1. 어플리케이션 - 앱 서명 에서 최초 '구글 앱 서명을 사용'을 눌러줌. 한번 누르고 나면 위와같이 

'앱 서명을 사용하도록 설정되었습니다' 메시지가 표기됨.

 

 

2. 앱버전 - 내부 테스트 트랙 - 관리

 

3. aab 나 apk 파일을 올려주면 된다. 반드시 '앱 서명 키를 관리 및 보호하도록 허용' 부분이 사용중입니다 인것을 확인.

4. 업로드 / 검토까지만 하고 출시까지는 안눌러도 된다.

 

단계 3 : 게임 서비스 생성

더보기

 어플리케이션이 아니라 '게임 서비스'를 별도로 생성해야한다.

1. 게임 서비스 - 새 게임 추가로 추가.

 2. 앱 이름 입력한뒤 계속.

 

 3. 연결된 앱에 자신의 앱을 연결해준다.

 

 

 4. 임시로 업적 한개를 만듦.

 5. 리소스 받기 버튼을 누름

6. 나오는 텍스트를 복사해서 유니티에 입력해야하니 따로 저장해둠. (Resources Definition)

 - 업적등이 바뀔때마다 여기서 복사해와야함.

 

단계 4 : GPGS 임포트

더보기

 

 

1. GPGS 패키지 프로젝트에 임포트

2. 임포트 직후 프로젝트 재시작

 

3. 위와 같은 메시지가 떴다면 성공.

4. Window - Google Play Games - Setup - Android setup 으로 진입

5. Jetpack 라이브러리는 API 타겟이 28이상일때만 지원 한다고함.

왠진 모르겠는데 프로젝트의 타겟 API가 25로 설정되어있었나봄. Yes를 눌러 세팅.

5. Android Auto-resolution : Enable

 

 

단계 5 : GPGS Configuration 세팅

더보기

 

위와 같은 창이 나오는데, 다른 부분은 건드리지말고,

Resources Definition, Web App Client ID만 설정한다.

 

Resources Definition : 아까 위쪽에서 게임서비스 - 업적 - 리소스 받기에 적혀있던 텍스트를 붙여넣는다. 

Web App Client ID : 

구글 API 콘솔로 들어가서, 사용자 인증정보에 OAuth 2.0 클라이언트 ID중 웹 어플리케이션이 있다면 해당 클라이언트 ID를 복사해서 넣자.

 

없으면 사용자 인증정보 만들기 -> OAuth 클라이언트 ID -> 웹 어플리케이션 으로 생성해서 클라이언트 ID를 받을 것.

 

 

입력 후 Setup을 누르면 GPGSIds 라는 클래스가 생기고,

여기서 ID값을 참조해서 업적이나 리더보드등을 불러오면 된다.

 

단계 6 : GPGS 스크립트

더보기
using System.Collections;
using UnityEngine;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using GooglePlayGames.BasicApi.SavedGame;
using System;
using System.Text;
#if UNITY_IOS
using UnityEngine.SocialPlatforms.GameCenter;
#endif

public class GooglePlayManager : MonoBehaviour
{
    #region 싱글톤
    private static GooglePlayManager _instance = null;

    public static GooglePlayManager Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = (GooglePlayManager)FindObjectOfType(typeof(GooglePlayManager));
                if (_instance == null)
                {
                    Debug.Log("There's no active ManagerClass object");
                }
            }
            return _instance;
        }
    }

    void Awake()
    {
        if (_instance != null && _instance != this)
        {
            DestroyImmediate(gameObject);
        }
        else
        {
            _instance = this;
            DontDestroyOnLoad(gameObject);
        }
    }
    #endregion

    #region 구글플레이 초기화 및 로그인
    private void Start() //동적도 할당을 해주어야 한다.
    {
        CheckSocialLogin();
    }

    public bool isProcessing
    {
        get;
        private set;
    }
    public string loadedData
    {
        get;
        private set;
    }

    public bool IsLogined =>Social.localUser.authenticated;

    private void CheckSocialLogin()
    {
#if UNITY_ANDROID
        PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
        //.EnableSavedGames() // 저장된 게임 활성화 : 안쓰시니까 주석처리
        .Build();

        PlayGamesPlatform.InitializeInstance(config);

        // 구글 플레이 로그를 확인할려면 활성화
        PlayGamesPlatform.DebugLogEnabled = false;

        // 구글 플레이 활성화
        PlayGamesPlatform.Activate();

        // 로그인 안돼있을 경우 로그인 호출
        if (PlayGamesPlatform.Instance.IsAuthenticated() == false)
            SocialSignIn();
        
#elif UNITY_IOS
        SocialSignIn();
#endif
    }

    // 로그인
    public void SocialSignIn()
    {
        Social.localUser.Authenticate((success) =>
        {
            if (success)
            {
                Debug.Log("로그인 성공");
#if UNITY_IOS
                GameCenterPlatform.ShowDefaultAchievementCompletionBanner(true);
#endif
            }
            else
            {
                Debug.Log("로그인 실패");
            }

        });
    }

    #endregion

    #region 리더보드
    public void ShowMainLeaderBoard()
    {
        if (Social.localUser.authenticated == false)
        {
            Social.localUser.Authenticate((bool success) =>
            {
                if (success)
                {
                    // Sign In 성공
                }
                else
                {
                    // Sign In 실패 
                    return;
                }
            });
        }

#if UNITY_ANDROID
        //PlayGamesPlatform.Instance.ShowLeaderboardUI(GPGSIds.leaderboard_sum_of_all_stage_score);
#elif UNITY_IOS
        GameCenterPlatform.ShowLeaderboardUI(GPGSIds.leaderboard_sum_of_all_stage_score, UnityEngine.SocialPlatforms.TimeScope.AllTime);
#endif
    }
    #endregion

    #region 업적
    public void ShowAchievement()
    {
        if (Social.localUser.authenticated == false)
        {
            Social.localUser.Authenticate((bool success) =>
            {
                if (success)
                {
                    // Sign In 성공
                    return;
                }
                else
                {
                    // Sign In 실패 처리
                    return;
                }
            });
        }

        Social.ShowAchievementsUI();
    }

    #endregion
}

 

위의 스크립트를 시작씬에 넣어준다. 

이제 GPGS도 세팅이 됐으니, 다시 APK를 업로드 해준다.

BundleCode가 아까 올렸던 APK보다 높아야 됨에 주의.

 

단계 7 : APK 재 업로드

더보기

  내부 앱 테스트라도 앱을 출시하기 위해서는 모든 항목들이 초록색 체크표시가 되도록 입력해줘야한다.

스토어 등록정보에서 사진 리소스 입력해야되는 부분이 많지만,

테스트에서는 다른부분은 비워두고 안드로이드 스크린샷 2장만 넣어주면 된다. 

 

콘텐츠 등급 설문은 자신에 앱에 대해 체크하면 됨.

출시 불가판정같은게 나왔다면 무언가 잘못체크한것. '현금거래'는 전부 아니오를 체크할 것.

 

앱 콘텐츠는 아동보호 법률 관한 설문인데 13세이상을 체크하고 어린이에게 관심을 끌지 않음을 체크. 

 

1. 추가로 게임 서비스 - 테스트 에서 테스트 그룹을 체크

 

단계 8 : 구글 API 설정

더보기

정식 출시버전이랑 테스트 버전이랑 사용되는 클라이언트 ID가 다르다고 한다.

이걸 통합해주기 위해서 설정하는것.

 

 

1.게임 서비스 - 게임 세부정보 - API 콘솔 프로젝트로 가서 ~에 연결되어있습니다 파란글씨 클릭 

 

 2. 해당 프로젝트에 연결된 API 프로젝트가 열린다.

  여기서 OAuth 2.0 ID 한개가 이미 생성되어있는 것을 확인 할 수 있다. 이 키는 출시용으로 사용되는 ID.

 

3. 사용자 인증정보 만들기 - OAuth 클라이언트 ID 를 누름

 

애플리케이션 유형 : Android

이름 : 업로드 인증서

서명 인증서 지문 : 어플리케이션 - 앱서명 - 업로드 인증서 - SHA-1 인증서 지문을 입력

패키지이름 : (자신의 앱 패키지 이름 입력)

 

 

업로드 인증서는 테스트 단계에서 사용됨.

앱 서명 인증서는 출시할때 사용됨.

 

 

여기까지 완료되면, 구글콘솔을 통해 다운받지 않더라도

오프라인으로 APK를 바로 빌드해서 넣는 것으로 구글 로그인 및 업적을 테스트할 수 있다.

 

 

 

단계 9 : 앱 게시 기다리기

더보기

 

올리고나면 위와같이 상태가 게시 보류 중으로 바뀜.

테스트가 끝나면 게시된다.

 

 

게시되었다면 테스트 참여 URL이 표시되기 시작하고, 이 링크로 설치가능하다.

 

번외 팁 1 : 내부 앱 공유

더보기

APK를 업로드 한 후

APK 라이브러리 - 살펴보기를 누르면 다이렉트 링크를 얻을 수 있다.

이걸로 내부 앱 공유가 가능함. (근데 게시가 완료된 앱만 가능한듯)

 

댓글

Designed by JB FACTORY