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

최성규-방음종합물류도매님의 프로필 이미지
최성규-방음종합물류도매

작성한 질문수

[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)

토큰 정보 유저정보에 저장하기

토큰 정보 유저정보에 저장하기 강의 4분 12초 코드를 동일하게 입력했는데 적용이 잘 안되는 것 같아요.

작성

·

233

0

위에 toString 부분이 정상적으로 활성화가 안 되는 것 같아요. 노란색 글씨로 변경되어야 하는 걸로 알고 있는데,

앞서 스플래쉬 화면에서도 토큰정보 가지고 올 때도 동일하게 코드가 반응이 없네요.

앱을 켜도 토큰 값이 로그캣에 뜨지않아요.

답변 3

0

2번에서 토큰 값이 정확히 받아오고 있는지 확인을 어떤 방식으로 해야하나요?

0

람다 함수 내에서 로그를 찍어서 찍어서 동작하는지 점검하라는 것은 어떻게 하나요...

챗 지피티에서 아래와 같이 해라고 하는데 괜히 코드 건드렸다가 오류 발생할 거 같아서 못하고 있는데...

 

1. 로그 찍기(Logcat 사용)

안드로이드에서 로그를 찍는 것은 앱의 동작을 추적하고 디버깅하는 데 유용합니다. 안드로이드의 Log 클래스를 사용하여 로그 메시지를 출력할 수 있습니다.

2. completeListener 란?

completeListener는 일반적으로 비동기 작업이 완료되었을 때 호출되는 콜백 인터페이스입니다. 예를 들어, Firebase Firestore에서 데이터를 읽거나 쓰는 작업이 완료되었을 때 completeListener를 사용할 수 있습니다.

3. 람다 함수 내에서 로그 찍기

람다 함수를 사용하여 리스너를 구현할 때, 로그를 찍는 방법을 예제로 설명드리겠습니다.

예제 1: Firebase Firestore의 addOnCompleteListener 사용

java

코드 복사

FirebaseFirestore db = FirebaseFirestore.getInstance(); DocumentReference docRef = db.collection("users").document("user_id"); // 예시: Firestore에서 문서 가져오기 docRef.get().addOnCompleteListener(task -> { if (task.isSuccessful()) { DocumentSnapshot document = task.getResult(); if (document.exists()) { Log.d("FirestoreExample", "DocumentSnapshot data: " + document.getData()); } else { Log.d("FirestoreExample", "No such document"); } } else { Log.d("FirestoreExample", "get failed with ", task.getException()); } });

위 예제에서, addOnCompleteListener 메서드 안에 람다 함수가 사용되고 있습니다. 람다 함수 내에서 Log.d 메서드를 사용하여 로그를 찍고 있습니다.

예제 2: Firebase Authentication의 addOnCompleteListener 사용

java

코드 복사

FirebaseAuth mAuth = FirebaseAuth.getInstance(); mAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, task -> { if (task.isSuccessful()) { // 로그인 성공 Log.d("AuthExample", "signInWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); } else { // 로그인 실패 Log.w("AuthExample", "signInWithEmail:failure", task.getException()); Toast.makeText(this, "Authentication failed.", Toast.LENGTH_SHORT).show(); } });

이 예제에서는 Firebase Authentication을 사용하여 이메일과 비밀번호로 로그인할 때, addOnCompleteListener를 통해 작업이 완료되었는지 확인하고 로그를 찍습니다.

4. 로그 확인

안드로이드 스튜디오에서 로그를 확인하려면 다음 단계를 따르세요:

  1. 안드로이드 스튜디오에서 Logcat 열기:

    • 하단의 Logcat 탭을 클릭하여 로그 창을 엽니다.

  2. 필터 설정:

    • 로그 메시지의 태그로 필터링할 수 있습니다. 예를 들어, 위 예제에서는 "FirestoreExample" 또는 "AuthExample" 태그로 로그를 출력했으므로, Logcat 창에서 해당 태그로 필터링하여 로그를 쉽게 찾을 수 있습니다.

  3. 로그 확인:

    • 로그 메시지가 출력되는지 확인하여 completeListener가 제대로 동작하는지 확인합니다.

이와 같은 방법으로 람다 함수 내에서 로그를 찍어 completeListener가 동작하는지 점검할 수 있습니다. 추가적으로 궁금한 점이 있으면 언제든지 질문해 주세요!

0

안녕하세요, 인프런 AI 인턴입니다.

코드와 설명을 바탕으로 추측하건대, FirebaseMessaging.getInstance().token.addOnCompleteListener 을 통해 구현하신 토큰 정보를 가져오는 과정에서 문제가 발생하는 것 같습니다. toString() 메소드가 예상대로 작동하지 않는 경우, 토큰 정보를 제대로 가져오지 못하고 있는 것일 수 있습니다.

  1. 먼저, addOnCompleteListener 가 정상적으로 호출되고 있는지 확인해주세요. 람다 함수 내에서 로그를 찍어서 CompleteListener 가 동작하는지 점검하십시오.
  2. addOnCompleteListener 내에서 result 또는 task 객체를 통해 토큰 값을 정확히 받아오고 있는지 확인해보세요. task.isSuccessful을 통해 성공적으로 토큰 값을 받아왔는지 확인할 필요가 있습니다.
  3. 에러 로그를 확인하기 위해 Log.e 대신 Log.d 또는 Log.i로 로그 레벨을 변경해보시길 권장합니다. 때로는 이러한 로그 레벨의 변경이 도움될 때가 있습니다.
  4. 안드로이드 스튜디오의 Logcat 필터링 설정을 확인해주세요. 로그캣에서 앱의 패키지 이름이나 특정 태그로 필터링되고 있는지 확인하시고, 필터링이 문제가 되지 않는지 점검하십시오.
  5. Firebase Cloud Messaging(FCM)이 프로젝트와 정상적으로 연결되어 있는지, google-services.json 파일이 최신 상태인지 확인해 주세요.

토큰 값이 로그캣에 나타나지 않는 경우, 위의 해결 방안들을 하나씩 시도해보시면 문제의 원인을 좀 더 명확히 파악할 수 있을 겁니다. 추가적으로 Firebase 공식 문서나 안드로이드 개발 관련 커뮤니티를 참고하시는 것도 좋은 방법입니다.

최성규-방음종합물류도매님의 프로필 이미지
최성규-방음종합물류도매

작성한 질문수

질문하기