본문 바로가기

유니티(Unity)

unity firebase crash발생

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