https://firebase.google.com/?hl=ko
설치 과정은 구글에서 제공하는 안내를 따라하면 손쉽게 할 수 있다.
Firestone Databse와 Realtime Database가 있는데,
개인적으로 지금 프로젝트는 실시간으로 데이터를 처리할 필요가 많이 없다고 느껴
Firestone을 선택했다.
(이후 확장성에서 유리하다는 것도 선택 기준이 되었다. 사실 복잡한 데이터를 다루지도 않을 것이지만 그래도 다양한 기능을 지원한다고 하니 마음이 끌렸다.)
이후 환경 설정은 다음 절차를 따라한다.
PlayerSettings는 Edit - Project Settings에 있다.
Database URL not set in the Firebase config.
USE_AUTH_EMULATOR not set.
두 가지 메시지가 발생한다.
설치하라는거 다 했는데 뭐가 문제냔 말이냐.
에뮬레이터는 아직 지원안한다는 ... 챗GPT 피셜이다.
둘 다 무시해도 아무 일도 일어나지 않긴 한다.
첫 번째 메시지는 데이터베이스를 세팅해주고 (딕셔너리 형태로 만들어야 한다!)나서 사라졌다.
두 번째 메시지는... 그냥 계속 나오지만 아무런 문제는 없다.
아무튼 로그인 - 데이터 연동 작업이 전부 잘 되므로 현재 인식하는 문제는 없는 것으로...
언젠가 답을 알게되면 돌아오겠다.
로그인이 안 된다!
로그인 시도는 하는데 auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith 이걸 실행하지를 못한다...
그래서 권한 문제인가 싶어 권한도 추가해보고 별짓을 다했으나 해결되지 않음
괜히 여기 밑에 package를 프로젝트 package 이름으로 변경하는 건 줄 알고 바꿨다가 (GPT가 시킴 ㅡㅡ) 하루를 날렸다. 이건 파이어베이스 내용이라 저렇게 써있는 것이 맞다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.firebase.app.unity"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
아무튼 빌드하면 로그인이 안 됨... 에디터에서는 로그인 잘만 됨...
네트워크 문제 없는데... 보안 문제도 없는 것 같은데 왜 그런지 모르겠다 ㅠㅠ
에디터 재설치, 재시작, 재빌드, 클린빌드, 파이어베이스 다시 설치, 기다려보기, ARM64로 수정, IL2CPP 세팅, internet access required, 플러그인 타겟 플랫폼 변경, 프로가드 체크, keystore 설정, sha-1, sha-256 지문 등록, continuewith MainThread로 변경, 로그캣 설치, 플레이 콘솔 어쩌고 만들기.. 다 해봄
해결했다!!!!
초기화 부분에 문제가 있는거였음
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available) {
// 여기는 세팅 완료된 것 -> 여기로 auth 변수 할당 옮김
} else {
UnityEngine.Debug.LogError(System.String.Format(
"Could not resolve all Firebase dependencies: {0}", dependencyStatus));
output.text = $"파이어베이스 오류 : {dependencyStatus}";
// 여기는 세팅 실패한 것
}
});
// auth 변수 할당을 여기서 했었다!
에디터에서는 할당을 이 구분 밖에서 해줘도 할당이 됐었는데 빌드에서는 안되었던 것. 세팅 완료 시점으로 할당 위치를 바꾸었다. (처리 속도 차이가 있는건지 이유는 자세히 모르겠음)
비동기 메서드여서 섬세하게 체크했어야했는데 바보같은... 한 구만리 돌아온 듯
코드 한 줄 위치 바꾸면 될 것을 ㅜㅜ