안드로이드 랜덤채팅 앱
✋ 소개
Firebase Realtime Database
를 이용해서 구현한 랜덤 채팅 앱입니다.
대화 상대가 랜덤으로 매칭되어 채팅하게 됩니다.
🧑🤝🧑 구성원
- 백엔드 및 프론트엔드 : 1명
💻 기술 스택
- Kotlin
- Firebase Realtime Database
내가 기여한 기능
랜덤 채팅이 이루어지는 과정은 다음과 같이 세 가지로 분류하였습니다.
- 기본 (채팅 시작 전)
- 대화 상대 탐색
- 채팅방
기본
랜덤한 대화 상대를 찾을 수 있는 버튼으로 구성되어있습니다.
해당 버튼을 누르면 대화 상태를 찾기 시작합니다.

대화 상대 탐색

대화 상대 탐색 시에는 아래 과정이 일어나게 됩니다.
- 입장 가능한 채팅방이 있는지 검색
- 채팅방이 존재한다면 접속
- 채팅방이 존재하지 않는다면 새로운 채팅방 생성
- 새롭게 생성된 채팅방에 상대가 매칭되면 해당 채팅방 접속
또한, 로딩 화면에서는 현재 상태에 따른 문구가 표시되어 사용자가 기다리는 동안 어떤 과정이 이루어지는지 알 수 있도록 구현하였습니다.
- "입장 가능한 채팅방이 있는지 검색중입니다."
- "입장 가능한 채팅방이 없어 채팅방을 생성 중입니다."
- "상대방을 기다리는 중입니다."
여러 가지 상황을 테스트 하는 중 로딩 중인 상태에서 앱을 종료하거나 뒤로가기 버튼을 누르는 경우에 사용하지 않던 데이터가 남아있는 문제를 발견하였습니다.
따라서 로딩 중인 상태에서 채팅을 종료하는 경우도 처리하기 위해 생명 주기 메소드인 onDestroy
를 활용하여 내부에 남은 데이터를 처리하도록 하였습니다.
채팅방
채팅방 화면은 서로 같은 채팅방 데이터베이스를 바라보는 사용자 2명이 접속하게 됩니다.
서로 간에 채팅을 보내게 되면 데이터베이스에 해당 메세지를 저장하게 되고 Firebase Realtime Database
의 특징에 따라 저장된 데이터를 바로 확인하여 화면에 표시하였습니다.
상대방이 나가게 되면 채팅방 데이터베이스에서 나간 사용자를 제거하게 되고 남아있는 사용자에게는 채팅이 종료되었다는 문구를 표시하여 알 수 있도록 하였습니다.

마치며
개인적으로 앱 개발을 공부하면서 처음 만들어본 프로젝트이다보니 어려움도 많았고 코드의 퀄리티도 부족하다고 느꼈지만 그래도 원하던 기능을 구현해낸 것에 큰 만족감을 느꼈습니다.
이번 프로젝트를 통해 앱 개발에 대한 기본적인 지식을 얻을 수 있었고, 앞으로 더 많은 프로젝트를 진행하면서 더 나은 코드를 작성할 수 있도록 노력하고자 합니다.