Skip to content

ranchat-kr/ranchat_iOS

Repository files navigation

랜톡 (Ran-Talk)

랜덤 매칭 기반 익명 실시간 채팅 iOS 앱

Swift iOS Xcode

Play Store


스크린샷

채팅방 목록 채팅
신고 푸시 알림 딥링크

주요 기능

기능 설명
랜덤 매칭 START 버튼으로 랜덤 사용자와 즉시 매칭
AI 매칭 8초 내 상대가 없으면 GPT와 대화하는 방 자동 생성
실시간 채팅 WebSocket STOMP 기반 메시지 송수신, 발신 시간 표시, 무한 스크롤
채팅방 목록 기존 매칭된 방 재입장, Pull-to-Refresh
사용자 신고 채팅 상대방 신고 (스팸·욕설·광고·허위정보·저작권 침해·기타)
설정 닉네임 변경, 푸시 알림 ON/OFF
푸시 알림 FCM 기반 메시지 수신 알림, 탭 시 해당 채팅방으로 딥링크 이동
보안 iOS Keychain Services를 이용한 userId 암호화 저장

기술 스택

분류 사용 기술
언어 Swift
UI SwiftUI
아키텍처 Clean Architecture (MVVM + UseCase + Repository)
상태 관리 @Observable (Swift Observation)
비동기 async/await, @MainActor
네트워크 Alamofire
WebSocket StompClientLib (STOMP 프로토콜)
보안 iOS Keychain Services
푸시 알림 Firebase Cloud Messaging (FCM)
테스트 XCTest
의존성 관리 CocoaPods, Swift Package Manager

프로젝트 구조

ranchat/
├── ranchatApp.swift
├── ContentView.swift
├── Domain/
│   ├── Entity/
│   ├── Repository/           # Repository Protocols
│   ├── Service/              # WebSocketService Protocol
│   └── UseCase/
│       ├── User/
│       ├── Room/
│       ├── Chat/
│       └── Notification/
├── Data/
│   ├── DTO/
│   ├── DataSource/           # NetworkClient
│   ├── LocalStorage/
│   └── Repository/
├── Infrastructure/
│   ├── WebSocket/            # WebSocketHelper (STOMP)
│   ├── Keychain/
│   ├── Network/
│   ├── Session/
│   └── Logger/
└── Presentation/
    ├── Home/
    ├── RoomList/
    ├── Chatting/
    ├── Setting/
    ├── Common/
    └── Extension/

About

랜챗 iOS 코드 입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors