/iOS06-NearTalk

💫 근방에서 금방 만나요, 근방톡 💫

Primary LanguageSwift

NearTalk


근처에 있는 사람들과 실시간 소통할 수 있는 메신저 앱 "NeakTalk(근방톡)" 입니다.

개발 기간: 2022.11.07 ~ 2022.12.16


프로젝트 소개

💫 근방에서 금방 만나요, 근방톡 💫

  • 실시간 위치 기반으로 근처에 있는 오픈 그룹 채팅방에 입장하고, 다른 사람들과 채팅을 할 수 있습니다.

  • 친구를 맺은 후, 거리에 상관 없이 개인 채팅방을 만들 수 있습니다.


팀원 소개

S001 고병학 S009 김영욱 S013 김준영 S025 신동은 S046 임창묵
@bengHak @yw22 @prestonk162 @dongeunshin @lymchgmk

개발환경

IDE

badge

iOS 최소 지원

badge


프레임워크 및 라이브러리

Package dependency manager

badge

Networking

badge

Asynchronous programming

badge badge badge badge

Autolayout

badge badge

Image caching

badge

Dependency injection

badge


프로젝트 주요 기능

메인지도 화면

[메인지도] 권한요청 [메인지도] 채팅방 클러스터링 [메인지도] 콜아웃뷰 [메인지도] 바텀시트 [메인지도] 입장가능거리


그룹 채팅/ DM 채팅

채팅생성 메세지작성 메세지발신

  • 채팅방을 생성하고 메세지를 작성할 수 있습니다.

채팅입장 메세지송수신 채팅방탈퇴

  • 지도에서 입장한 채팅방에서 그룹 채팅이 가능합니다.
  • 안 읽은 사람 수를 메세지마다 표시해 줍니다.
  • 우 상단 버튼을 통해 채팅방 나가기를 할 수 있습니다.

채팅방 목록

채팅방목록01 채팅방목록02 채팅방목록03

  • Group 채팅방과 DM 채팅방을 분리했습니다.
  • 현재위치기반으로 입장 가능한 채팅방을 UI로 표시했습니다.
  • 실시간으로 서버와 동기화해 새로운 메세지가 올때마다 UI를 업데이트합니다.

QR코드를 통한 친구 추가/삭제 및 채팅

친구목록01 친구목록02 친구목록03 친구추가01

  • QR코드를 통하여 친구추가와 추가한 친구를 삭제할 수 있습니다.
  • QR코드로 추가한 친구와 대화할수 있습니다.

애플 계정으로 회원 가입, 로그인, 회원 탈퇴

로그인화면


텍스트와 이미지로 프로필 등록 및 편집

  • 프로필 사진은 설정 앱에서 접근을 허용한 사진만 사용 가능합니다.

다크 모드 지원

시스템 설정 (라이트) 시스템 설정 (다크) 다크 모드 라이트 모드

아키텍쳐 & 디자인 패턴

Data Flow

Clean Architecture

  • 프레젠테이션 레이어, 도메인 레이어, 데이터 레이어로 분리된 코드로 각 레이어에서 개발한 결과물을 합칠 때 이점이 있기 때문에 도입했습니다.
  • 도메인 레이어가 UI와 독립적이기 때문에 비즈니스 로직의 유닛 테스트에 용이합니다.
  • MVVM에서 viewModel이 커지는 것을 use case와 repsoitory 코드로 분산할 수 있습니다.

MVVM - C

  • View와 독립적으로 개발할 수 있는 viewModel을 활용해서 유닛 테스트하기에 용이한 MVVM 패턴을 도입했습니다.
  • View의 화면전환 로직을 viewController에서 분리하는 것으로 화면전환을 유연하게 할 수 있는 코디네이터 패턴을 도입했습니다.