인프런 커뮤니티 질문&답변

kumin123님의 프로필 이미지
kumin123

작성한 질문수

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

다이어트 메모앱 소개 및 익명으로 로그인해보기

익명 인증 관련 질문있습니다.

작성

·

387

0

영상과 같이 따라하는중입니다.

영상에 나오는

try {

}

castch ( e : Exception) {

log.e("SPLASH", "회원가입 시켜줘야함")

}

까지는 작동이 잘 되는걸 로그로 확인했습니다.

그 후

auth.signInAnonymously()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInAnonymously:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInAnonymously:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }
        }

이 부분을 가져와서

auth.signInAnonymously()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
            Log.e("SPLASH", "비회원로그인성공")
            } else {
            Log.e("SPLASH", "비회원로그인성공")
            }
        }

이런 식으로 디버깅해봐도 로그에는 if else문이 들어오기전에 있는 회원가입이 필요합니다. 의 내용까지만 log에 찍힙니다.

auth.signInAnonymously() 함수부터는 작동이 되지 않는걸로 판단이 되는데 혹시 이럴땐 어떻게 해야 하는지 알수있을까요?

아니면 같은 증상을 해결하신분 있으신가요?

도움 부탁드립니다

답변 2

1

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

안녕하세요

전체 코드와 로그 내역을 스크린샷으로 공유해주시겠어요?

확인 후 도움드릴 수 있을 것 같습니다.

kumin123님의 프로필 이미지
kumin123
질문자

package org.image.exer_memo

import android.content.ContentValues.TAG
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.util.Log
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.ktx.auth
import com.google.firebase.ktx.Firebase

class SplashActivity : AppCompatActivity() {

    private lateinit var auth: FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)

        auth = Firebase.auth

        try{
            Log.e("SPLASH", auth.currentUser!!.uid)

            Handler().postDelayed({
                startActivity(Intent(this, MainActivity::class.java))
                finish()
            }, 3000)
        } catch (e :Exception) {

            Log.e("SPLASH", "회원가입이 필요합니다!!")

            auth.signInAnonymously()
                .addOnCompleteListener(this) { task ->
                    if (task.isSuccessful) {
                        Log.e("SPLASH", "비회원 로그인 성공")
                        Toast.makeText(this, "비회원 로그인 성공",
                            Toast.LENGTH_SHORT).show()

                        Handler().postDelayed({
                            startActivity(Intent(this, MainActivity::class.java))
                            finish()
                        }, 3000)

                        val user = auth.currentUser

                    } else {
                        Log.e("SPLASH", "비회원 로그인 실패")
                        Toast.makeText(this, "비회원 로그인 실패.",
                            Toast.LENGTH_SHORT).show()
                    }
                }
        }
    }
}

현재 사용한 코드고 if(task.isSuccessful)과 else부분이 작동이 안되는것 같아

log.e로 찍었습니다.

3.PNGlog.e는 위 메시지만 출력되고 있습니다.

 

1.PNG2.PNG혹시 필요할지 몰라 전체 로그 내역입니당.

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

잘 하신 것으로 보이는데... 아래 2가지를 함께 확인해볼까요?

 

  1.  

auth.signInAnonymously()
                .addOnCompleteListener(this)

위의 코드를 아래와 같이 바뀌었을 때 로그가 어떻게 나오는지

auth.signInAnonymously()
                .addOnCompleteListener(this@MainActivity)

 

  1. 아래 코드를 try / catch 범위 밖으로 뺏을 때 로그가 어떻게 나오는지

auth.signInAnonymously()
                .addOnCompleteListener(this) { task ->
                    if (task.isSuccessful) {
                        Log.e("SPLASH", "비회원 로그인 성공")
                        Toast.makeText(this, "비회원 로그인 성공",
                            Toast.LENGTH_SHORT).show()

                        Handler().postDelayed({
                            startActivity(Intent(this, MainActivity::class.java))
                            finish()
                        }, 3000)

                        val user = auth.currentUser

                    } else {
                        Log.e("SPLASH", "비회원 로그인 실패")
                        Toast.makeText(this, "비회원 로그인 실패.",
                            Toast.LENGTH_SHORT).show()
                    }
                }

결과 공유해주시겠어요?

 

 

0

kumin123님의 프로필 이미지
kumin123
질문자

늦은 시간까지 답변해주셔서 감사합니다.

우선 이 부분은 해결이 되었습니다.

왜인지는 모르겠는데 if / else 쪽이 작동하는데 시간이 굉장히 오래 걸리는것이 문제였던것 같습니다.

D/EGL_emulation: app_time_stats: avg=526.47ms min=21.20ms max=1258.37ms count=3

대충 이런식 로그가 뜨긴 하던데 작동 시키고 구글링몇십분 정도 하다보니 넘어가졌습니다.

신경써주시고 일일이 체크해주셔서 감사드립니당:)

 

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

넵 추가적으로 안되는 부분 있으시면 언제든지 말씀해주세요~

kumin123님의 프로필 이미지
kumin123

작성한 질문수

질문하기