본문 바로가기

프로젝트/ChatApp ver.1 (w/Firebase)

(6)
05. 더 나아가기 자동 스크롤 메시지의 양이 많아한 화면에 표시하지 못하는 경우 Scroll View는 화면 밖에 새로운 메시지를 표시한다. 카톡이나 기본 메시지 앱의 경우 새 메시지가 화면 밖에 표시되면 자동으로 맨 아래로 이동하게 되는데, 이를 구현해 본다. Apple Developer Documentation developer.apple.com 원리는 간단하다. Scroll View의 scrollTo(_:anchor:) 메서드를 사용하는 것으로, 파라미터로 대상을 전달하기만 하면 된다. struct ContentView: View { @StateObject var messagesManager = MessagesManager() var body: some View { VStack { VStack { TitleRow()..
04. Firebase에 쓰기 메서드 구현 import Foundation import FirebaseFirestore import FirebaseFirestoreSwift class MessagesManager: ObservableObject { @Published private(set) var messages: [Message] = [] let db = Firestore.firestore() init() { getMessages() } func getMessages() { db.collection("messages").addSnapshotListener { querySnapshot, error in guard let documents = querySnapshot?.documents else { print("Error fetchin..
03. Firebase 초기화 및 Swift에서 사용하기 Firebase 초기화 하기 백엔드인 Firebase가 메시지를 저장할 수 있도록 DB를 초기화해 준다. 따로 서비스를 염두해 둔 앱이 아니기 때문에 간편하게 테스트 모드에서 시작한다. 사용하는 Region은 'asia-northeast3'로 한국에 위치해 있다. Region은 서비스의 응답 속도에 영향을 끼치는 경우가 있기 때문에 가까운 곳을 고르는 것이 좋다. Region은 Firestore를 초기화 한 이후 변경할 수 없으므로 잘 고르도록 하자. Cloud Firestore 위치 | Firebase 2022년 10월 18일에 오프라인과 온라인으로 진행될 Firebase Summit에 참여하세요. Firebase로 앱을 빠르게 개발하고 안심하고 앱을 출시하며 손쉽게 확장하는 방법을 알아보세요. 지금 ..
02. Firebase 연결하기 Firebase 프로젝트 생성 Firebase에 회원가입을 하고, 'Get started'를 선택한다. 프로젝트를 생성하고, 이름을 지정한 뒤 지금은 필요 없는 Google Analystic은 비활성화한다. 해당 기능은 Google의 분석 툴로, 실제 서비스라면 필요할지 모르겠지만 지금은 상관없다. 앱에 Firebase 추가 생성된 프로젝트의 Console로 이동해 표시된 'iOS' 버튼을 선택한다. 앱 등록에서는 Apple 번들 ID를 반드시 입력해 줘야 한다. Xcode 프로젝트의 Bundle Identifier를 입력해 주면 된다. 이외는 선택사항으로 입력하지 않아도 무방하다. 그다음 GoogleService-Info.plist 파일을 다운로드하여 안내대로 프로젝트 파일 안에 던져 넣고 다음 단계로..
01. 인터페이스 디자인 더미 데이터 import Foundation struct Message: Identifiable, Codable { var id: String var text: String var received: Bool var timestamp: Date } 실제로 Firebase에 연결되지 않은 상태이기 때문에, 화면에 출력할 더미 데이터들이 필요하다. 더미데이터들은 Message 구조체로 이뤄져 있고, 해당 구조체는 열거와 형식 변환이 자유롭도록 Identifiable 프로토콜과 Codable 프로토콜을 채용한다. TitleRow TitleBar는 HStack을 사용해 3개의 덩어리로 구성돼 있다. HStack의 spacing 파라미터에 20을 전달해 Embed 되는 View들의 간격을 20pt로 지정했다. As..
00. 시작하며 백엔드 물론 SQL이나 Oracle을 사용해 직접 구현하는 능력자들도 많다는 걸 알고 있다. 문제는 내가 그럴 재량이 없다는 것. 이름을 들어본 서비스들과 써 본 경험이 있는 서비스들이 존재한다. 간단하게 소개하고 왜 선택했는지 이유를 적어 둔다. AWS 클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services 개발자, 데이터 사이언티스트, 솔루션스 아키텍트 또는 AWS에서 구축하는 방법을 배우는 데 관심이 있는 모든 사용자용 무료 온라인 교육 AWS 전문가가 구축한 500개 이상의 무료 디지털 교육 과정 aws.amazon.com 가장 보편적인 백엔드 서비스로 규모도 가장 크고, 자료도 가장 많다. 어쩌면 가장 도움이 되는 경험일 수도 있겠지만, 여기에 삽질을 하기엔 개인적인 우..