플러터와 Back4App을 사용하여 실시간 채팅 애플리케이션 구축하기
채팅 애플리케이션을 만들려면 실시간 데이터 관리, 사용자 인증, 미디어 처리 및 효율적인 데이터 저장이 필요합니다. 이 튜토리얼에서는 1:1 및 그룹 대화, 메시지 상태 및 미디어 공유를 지원하는 Flutter에서 실시간 채팅 애플리케이션을 구축하는 방법을 배웁니다. 우리는 Parse Server로 구동되는 백엔드 서비스인 Back4App을 사용하여 백엔드 기능을 처리할 것입니다.
이 튜토리얼이 끝나면 다음과 같은 기능을 갖춘 완전한 채팅 앱을 갖게 됩니다:
- 사용자 인증: 안전한 가입 및 로그인 프로세스.
- 실시간 메시징: 라이브 쿼리를 사용한 즉각적인 메시지 전달.
- 사용자 존재: 사용자 온라인/오프라인 상태 추적.
- 미디어 저장: 채팅에서 이미지 전송 및 수신.
- 메시지 기록: 사용자에 대한 채팅 기록 유지.
이 튜토리얼을 따라 하려면 다음이 필요합니다:
- Flutter 및 Dart에 대한 기본 지식.
- IDE 또는 텍스트 편집기 (예: Visual Studio Code 또는 Android Studio).
- Flutter용 Parse Server SDK가 프로젝트에 추가되어야 합니다.
다음 구성 요소로 채팅 애플리케이션을 구축할 것입니다:
- 사용자 인증: 사용자가 가입하고 로그인할 수 있습니다.
- 연락처 목록: 채팅할 사용자 목록을 표시합니다.
- 채팅 화면: 실시간 메시징 인터페이스.
- 미디어 공유: 이미지 전송 및 수신 기능.
- 온라인 상태: 사용자의 온라인/오프라인 상태를 표시합니다.
터미널을 열고 다음을 실행하세요:
프로젝트 디렉토리로 이동하세요:
pubspec.yaml 파일을 열고 다음 의존성을 추가하세요:
flutter pub get 명령어를 실행하여 패키지를 설치하세요.
- parse_server_sdk_flutter: Back4App과 상호작용합니다.
- image_picker: 갤러리나 카메라에서 이미지를 선택합니다.
- cached_network_image: 효율적인 이미지 로딩 및 캐싱.
- uuid: 고유 식별자를 생성합니다.
- "새 앱 만들기"를 클릭하세요.
- 애플리케이션의 이름을 입력하세요, 예: "ChatApp", 그리고 "생성"을 클릭하세요.
다음 클래스를 생성할 것입니다:
- 사용자 (기본 Parse 클래스): 사용자 정보를 저장합니다.
- 메시지: 채팅 메시지를 저장합니다.
- 채팅방: 사용자 간의 채팅을 나타냅니다.
- 필드:
- 사용자 이름: 문자열
- 비밀번호: 문자열
- 이메일: 문자열
- 온라인 여부: 불리언
- 아바타: 파일 (선택 사항)
이 사용자 클래스는 내장되어 있으며, 추가 필드가 있는지 확인해야 합니다.
- 필드:
- 발신자: 포인터<_사용자>
- 수신자: 포인터<_사용자>
- 채팅방 ID: 문자열
- 내용: 문자열
- 이미지: 파일 (선택 사항)
- 생성일: 날짜 시간 (자동 추가)
- 필드:
- chatRoomId: 문자열
- users: Pointer<_User>의 배열
- lastMessage: 문자열
- updatedAt: DateTime (자동 업데이트됨)
- 이동하여 앱 설정 > 보안 및 키.
- 다음의 애플리케이션 ID와 클라이언트 키를 기록해 두세요.
열기 lib/main.dart 및 다음과 같이 수정하세요:
- 'YOUR_APPLICATION_ID'를 'YOUR_APPLICATION_ID' 및 'YOUR_CLIENT_KEY'를 실제 Back4App 자격 증명으로 교체하십시오.
lib 아래에 services라는 새 디렉토리를 만들고 auth_service.dart라는 파일을 추가하십시오.
새로운 디렉토리를 생성합니다 screens 아래에 lib 그리고 login_screen.dart 및 signup_screen.dart라는 이름의 파일을 추가합니다.
사용자의 온라인 상태를 업데이트하는 메서드를 AuthService에 생성합니다:
로그인 및 로그아웃 메서드를 업데이트합니다:
다음에 user_service.dart를 생성하십시오 services:
다음 종속성을 추가하세요 pubspec.yaml:
이것은 Live Query 지원이 포함된 최신 버전을 사용하고 있음을 보장합니다.
- 'YOUR_APP'을 'YOUR_APP'로 바꾸세요.
- ParseLiveListWidget: 실시간 쿼리 업데이트를 듣고 데이터가 변경될 때 다시 빌드하는 위젯입니다.
- sendMessage(): 텍스트 메시지 또는 이미지를 보냅니다.
- pickImage(): image_picker를 사용하여 이미지를 선택하고 메시지로 보냅니다.
- setupLiveQuery(): 채팅방에서 새로운 메시지를 듣기 위해 실시간 쿼리를 설정합니다.
터미널에서 다음을 실행하세요:
- 두 개의 장치 또는 에뮬레이터에서 앱을 엽니다.
- 다른 사용자 계정으로 가입하거나 로그인합니다.
- 한 계정에서 연락처 목록에서 다른 사용자를 선택합니다.
- 메시지와 이미지를 전송합니다; 두 장치에서 실시간으로 나타나야 합니다.
축하합니다! Back4App을 사용하여 Flutter에서 실시간 채팅 애플리케이션을 구축했습니다. 이 앱은 다음을 지원합니다:
- 사용자 인증: 안전한 로그인 및 가입.
- 실시간 메시징: 라이브 쿼리를 사용한 즉각적인 업데이트.
- 사용자 존재: 온라인/오프라인 상태 추적.
- 미디어 공유: 이미지 전송 및 수신.
- 메시지 기록: 채팅 메시지 지속.
- 그룹 채팅: 그룹 대화를 지원하도록 앱을 확장합니다.
- 메시지 상태: 읽음 확인 및 입력 표시기를 구현합니다.
- 푸시 알림: 앱이 백그라운드에 있을 때 새 메시지에 대한 알림을 보냅니다.
- 프로필 사진: 사용자가 아바타를 업로드할 수 있도록 허용합니다.
- 보안 강화: ACL 및 역할 기반 권한으로 데이터를 보호합니다.
행복한 코딩 되세요!