Unity/Tips

Unity 구글 Play 게임즈 서비스 설정(구글 로그인 요즘 느낌으로 다가)

최애뎡 2022. 4. 3. 20:33
728x90
반응형

모바일 개발을 하다 보면 어쩔 수 없이 거치는 구글 플레이 연동

도무지 정리를 안 할 수가 없어 정리 시작..

 

먼저 Project Settings

1. Package Name 설정

2. ARM64가 체크되어있어야 한다 ( * Scripting Backend가 Il2CPP여야 체크 가능)

[ 체크 안 하면 출시할 때 구글이 해달라고 할 것임 ]

3. Keystore하나 만들어 주자

[ * Keystore Manager클릭 후 만들어 주면 됨, 나머진 알아서 잘 입력하면 됨(Alias는 별명이라 회사명 소문자로 해도 될 듯 + Password는 걍 동일하게 함 + Vaildity의 경우 Keystore의 효력을 얼마나 할지 정하는 느낌 + 뭐 나머진 알아서... (아 본인의 경우 Keystore는 그냥 프로젝트에 포함시킴 괜히 어디 뒀다가 까먹을 바엔...) ]

 

이제 구글 플레이 게임즈 서비스에 필요한 Package를 받아야 함

https://github.com/playgameservices/play-games-plugin-for-unity

 

GitHub - playgameservices/play-games-plugin-for-unity: Google Play Games plugin for Unity

Google Play Games plugin for Unity. Contribute to playgameservices/play-games-plugin-for-unity development by creating an account on GitHub.

github.com

요기서 받으면 됨 + 설명도 나름 있긴 있음

요렇게 버전 확인 후 압축 풀고 current-build에 있는 패키지 설치하면 됨

설치 후 알아서 Force Resolve도 해줄 것이고 Plugins - Android에 뭐가 많이 생겼을 것임

* Releases에 들어가서 가장 최신의 버전을 받으면 되긴 하다만.. 본인의 경우 v11.01을 다운받았을 때 이상하게 Force Resolve도 제대로 됐음에도 분명 내가 success를 봤음에도 불구하고 몇몇 Plugins이 제대로 설치가 되지 않아서 몇몇 메서드는 작동하고 몇몇 메서드는 GooglePlayGames의 namespace에 없어서 작동하지 않는 미친 불상사가 발생했고 이유를 찾다 찾다 걍 시간 날림 -> 애매하다 싶으면 버전을 그냥 낮춰 받아도 큰 문제는 없음 => 본인은 v10.14로 사용 중

 

이제 Google Play Console에서 설정 시작

* 먼저 본인의 개발자 계정이 필요 -> Google Play Console 가입 후 25달러 지불하면 쭉! 사용 가능!

일단 앱 만들기로 앱을 하나 만들어 줘야 하는데 그 위에 보이는 앱 거부됨은 그냥 .. 그냥 내가 빠꾸 먹은 거니까.. 넘어..가.. (쫄지 말고 어려울 것 없이 하란 거 체크하고 만들면 됨)

 

일단 위처럼 만드는 게 목표라고 보면 됨

 

Play 게임즈 서비스에서 설정을 클릭하면 위와 같은 화면이 나올 것인데 이미 Google API를 사용한다면야 '네'를 체크하고 뭐 알아서 하면 되는데 처음이니 아니오 체크 후 만들어 주면 됨

 

그러면

이렇게 뜰 것이고 체크가 안된 부분들을 채워줄 것임 

* 그전에

자동으로 생성된 Google Cloud Platform의 이름이 영 맘에 안 드니 속성 수정을 누른 뒤 표기 이름을 프로젝트에 맞게 변경(영어로)하는 게 좋음 ( 위 이 앱은 어쩌구 저쩌구는 이미 본인이 만들었던 거라 뜨는 거니 가볍게 무시)

 

이제 Google Cloud Platform에서 보기를 통해 Google Cloud Platform에 들어가고 Play 게임즈 설정에서 봤던 해야 할 리스트들을 순서대로 진행하면 됨

1. OAuth 동의 화면을 클릭하여 만들어 줘야 함(외부로)

세상 귀찮게 입력해야 할 게 많지만 걍 * 표기된 부분만 하고 넘어감

* 그 뒤는 뭐 할 것 없이 저장 후 계속 누르다 보면 끝남..

 

이제 사용자 인증 정보를 만들어 줄 것임 (2개 만들 것임)

OAuth 클라이언트 ID를 클릭 후 

 

Android 체크하고 이름 정하고 (2개 만들 거니까 헷갈리지 않도록 잘..)

패키지는 Project Settings에서 받아오고

인증서 지문의 경우

Google Play Console - 설정 - 앱 무결성에서 확인 가능

* 인증서 지문의 경우 앱 서명 키 인증서, 업로드 키 인증서로 2가지가 존재하는데 앱 서명 키 인증서의 경우 Google Play Console에 올린 aab를(내부 테스트든 공게 테스트든 프로덕션이든 뭐든) 구글 플레이에서 다운로드할 때 적용되고 업로드 키 인증서의 경우 apk로 뽑아서 테스트할 때 사용하면 됨 => 그래서 OAuth 클라이언트 ID를 2개 만드는 것, 뭐 사실 apk로 안 할 거면 굳이 2개 안 만들어도....

=> 어쨌든 두 개의 인증서 지문을 사용하여 2개의 OAuth 클라이언트 ID를 만들면 됨 

 

이제 다시 Google Play Console로 돌아오면

설정의 아래쪽을 보면 사용자 인증 정보 추가 버튼이 활성화될 것이고 

유형 Android 선택 후 나머지 기입하고 OAuth 클라이언트를 Google Cloud Platform에서 열심히 만든 것을 사용하면 됨

* 이 사용자 인증 정보의 경우도 Google Cloud Platform에서 사용자 인증 정보를 2개 만들었을 경우 2개 만들면 되는데 apk로 확인 안 하고 Google Play Console에 aab로 올려 테스트할 경우에는 역시 2개 만들 필요는 없음

 

이제 Unity에서 세팅을 적용!

Android setup 진입 후 

두 부분을 채워 줄 것인데

Resources Definition은

요 친구를 통해 확인하고

Cliend ID는 아래 만든 사용자 인증 정보를 클릭하여 OAuth 클라이언트의 클라이언트 ID부분을 가져와도 되고 Google Cloud Platform에서 만든 사용자 인증 정보의 클라이언트 ID를 가져와도 됨 어차피 Google Play Console에서 앱 무결성 - 앱서명 에서 사용한 인증서 지문을 통해 만들어진 애들이라 다 같음

 

이제 검토 및 게시 클릭 후 나머지 간단한 세팅 해주면 끝 

(* 아 그 해야 할 사항 들에서 Play 게임즈 서비스 SDK를 프로덕션 APK에 추가하여 API 사용의 경우 aab로 빌드 한 뒤 내부 테스트든 프로덕션으로든 뭐로든지 Google Play Console에 올리면 알아서 됨)

 

그 로그인 코드의 경우 널리고 널렸지만서도

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

using TMPro;

using GooglePlayGames;

public class GoogleTest : MonoBehaviour
{
    public TMP_Text _TMP_Google = null;

    private void Start()
    {
        PlayGamesPlatform.DebugLogEnabled = true;
        PlayGamesPlatform.Activate();
        Login();
    }

    void Login()
    {
        if (PlayGamesPlatform.Instance.localUser.authenticated == false)
        {
            Social.localUser.Authenticate((bool success) =>
            {
                if (success) _TMP_Google.text = $"{Social.localUser.id} \n {Social.localUser.userName}";
                else _TMP_Google.text = "Failed";
            });
        }


    }

    public void LogOut()
    {
        ((PlayGamesPlatform)Social.Active).SignOut();
    }
}

이런 식으로 할 수 있고 고유의 User ID + Name 등을 받을 수 있으니 추후 서버 연동 시 사용하면 될 듯

반응형