auth사용 중 crash가 발생했다.
auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWithOnMainThread(task =>
{
if (task.IsCanceled)
{
Debug.LogError("로그인이 취소되었습니다.");
UITextController.currentState = 12;//100은 에러 타입
return;
}
if (task.IsFaulted)
{
Debug.LogError("로그인 중 오류가 발생했습니다: " + task.Exception);
UITextController.currentState = 11;
return;
}
if (task.IsCompletedSuccessfully)// 로그인 성공
{
Debug.Log("로그인 성공!");
user = task.Result.User;
if (CheckEmailVerified(user) == false)
{
SendVerifiedEmail(user);
LogOut();
UITextController.currentState = 200;
}
else
{
CurrentUserData.currentUserEmail = auth.CurrentUser.Email;
CurrentUserData.currentUserId = auth.CurrentUser.UserId;
UITextController.currentState = 10;
IsExistedNickName(user);//닉네임이 존재하는지 확인하는 메소드. 없을 경우 닉네임 생성 패널 활성화
}
Debug.Log("현재 유저" + auth.CurrentUser.Email);
logInPanel.SetActive(false);
}
});
정확한 원인은 모르겠지만 해결하기 위해 if (task.IsCompletedSuccessfully) 를 추가했다.(이 이후로는 안 나왔음.)아마도 작업이 실패 후
Debug.Log("로그인 성공!");
user = task.Result.User;
if (CheckEmailVerified(user) == false)
{
SendVerifiedEmail(user);
LogOut();
UITextController.currentState = 200;
}
else
{
CurrentUserData.currentUserEmail = auth.CurrentUser.Email;
CurrentUserData.currentUserId = auth.CurrentUser.UserId;
UITextController.currentState = 10;
IsExistedNickName(user);//닉네임이 존재하는지 확인하는 메소드. 없을 경우 닉네임 생성 패널 활성화
}
Debug.Log("현재 유저" + auth.CurrentUser.Email);
logInPanel.SetActive(false);
부분이 동작해서 인 듯 하다.
참고로 auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWithOnMainThread 안에는 비동기로 작동한다. 또한 ContinueWithOnMainThread 는 using Firebase.Extensions; 에 존재한다.유니티는 대부분 메인쓰레드에서만 정상작동하기 때문에 ContinueWith보단 ContinueWithOnMainThread를 사용하는 것이 좋다.(UI업데이트 등이 메인쓰레드에서만 작동한다.)
'유니티(Unity)' 카테고리의 다른 글
unity sha인증서 지문 확인 (0) | 2023.09.02 |
---|---|
uwp앱에서 exe파일 실행시키기 (0) | 2023.08.23 |
비동기 함수 사용시 UI업데이트 (0) | 2023.06.08 |
Firebase Storage MetaShop (0) | 2023.05.30 |
MetaShopEditor (0) | 2023.05.30 |