파이어베이스를 기반으로한 테스트용 채팅 앱구현 Android Chatting Test App based on Firebase with Kotlin(12, END)

타이핑을 하고 센드 버튼을 누르면 아래와 같은 오류가 뜨게 된다.

위의 부분을 디버깅해보면 아래와 같다.

 

room set은 true로 인식되나 아래 mAdapter가 문제이므로 이를 확인해보면,

 

위와 같이 null이 되있는 부분이 문제가 된다. 아무래도 recyclerView가 어디를 가르켜야될지를 모르고 있는것같으므로 findviewbyid를 선언해주자. 

recyclerView를 lateinitvar로 선언하고 아래와 같이 코드 수정을 하였다.

 

이렇게 해놓고 값을 입력하려고 보니 아래와 같은 오류가 발생한다.

이는 위의 var 부분인데, 이는 기반 앱의 아래 부분에서 new를 통해 mAdapter를 생성하는 부분이 빠져있어서 그런것 같다.

 

 

확인해보니 위는 제대로 동작하였는데 adapter가 null일경우의 예외케이스를 제대로 처리 못한것 같다. 이를 처리하자.

그것에 대한 처리는 위와 같다. mAdapter를 nullable하게 만들고 not null 일때 조건을 통과하도록 바꿔준다.

 

그렇게 해서 메세지를 전송하면 또 에러가 나는데 아래와 같은 에러이다.

 

 

이는 뷰홀더 맴버변수의 널러블 처리가 제대로 안돼있어서 그렇다 상황은 아래와 같다.

 

위를 전부 nullable 처리하고 관련된 인자들을 전부 . 에서 ?. 로 바꿔주고 필요하다면 널조건문을 아래와 같은 방식으로 붙여준다.

 

그렇게해서 실행해주면 기반앱과 마찬가지로 다음과 같은 결과를 얻을 수 있다.

 

 

이제 개인정보 관리 버튼을 눌렀을때 나오는 버그에 대해 해결해보자.

지금 버튼을 누르면 아래와 같이 정보를 받아 오지못하고 전부 빈칸으로 표시되는 문제가 있다.

 

 

 

UID를 파이어베이스에서 확인해보면

 

존재한다.

 

그런데 

이와 같이 token만 존재하고 아래와 같은 정보들은 존재하지가 않으므로 제대로 아이디 등록이 안되있는 것이라 볼 수 있다 

 

따라서 회원등록을 다시 살펴보아야한다.

 

아래와 같이 정보를 쓰고 sign up button을 다시 눌러보고 디버깅을 한다

 

SIGNUP 버튼을 눌렀을 때

아래와 같은 정보가 입력됨을 확인하였고, 'userdb'에 넣는것을 보았다.

파이어베이스에도 아래와 같이 추가되었다.

그런데  users를 보면 비어있다. 그런데 profile은 users를 확인하므로 값이 없는것이다. 

위 부분이 잘못되었음을 알았고 이를 고치기 위해서는 userdb와 users 두 db로 나누어놓고 사용하는 상태를 막아야한다. 예전에 한번 테스트 해볼꺼랍시고 userdb에다가 값을 넣었었는데, 이를 users로 고쳐준다.

 

그리고선 signup을 해주면,

 

파이어베이스에는 제대로 정보가 들어간다. 아래를 확인해보라.

 

하지만, 그래도 정보가 뜨지않는다. 왜일까? 다시 디버깅을 해본다.

 

파이어베이스에서는 위의 정보가 제대로 들어와있지만 

user_id를 입력하는 부분들이 null이여서 그렇다. 이를 해결해준다. 그 해결방법은 아래 textView를 주석처리해주면된다. 저 주석처리 된 부분을 살리고 싶으면 findViewbyId를 쓰면된다.

 

 

그러고서 다시 실행을 해보면,

위와 같이 값이 제대로 들어옴을 확인할 수 있다.

 

닉을 변경하고 다시 userlist fragmnet를 호출하니 아래 처럼 되어있다.

왜 값이 들어오지않았는지 다시 디버깅해보면,

 

위와 같이 uid와 myuid 가 같아 버리면 애초부터 visibility가 invisible이 되어있음을 확인하였다.

 

logout과 signin 을 반복하니 아래와 같이 아이디들을 정상적으로 리스트업 할 수 있는 것을 확인하였다.

또, 아래와 같이 다수인으로 구성된 채팅방도 되는 것을 확인하였다.

 

 

이것으로 DirectTalk9 기반 앱에 대한 코틀린 변환을 모두 마친다.

백버튼 이라던가 세세한 구현에 대한 버그들은 시간이 없어 수정하지 않는다.

 

이 다음 버전으로는 본인이 직접 코틀린+파이어베이스 조합으로 채팅방을 구현해서 깃헙에 올려볼 예정이다.

 

이 블로그가 도움이 되었기를 바랍니다.

 

 

아래는 이제까지 수정한 코드를 받을 수 있는 깃허브 주소입니다.

 

감사합니다.

 

https://github.com/ironmaskara/FBChattingTest

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유