적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift 튜토리얼

5. 돈 없어도 서버를 만들 수 있는 세상! _Swift Firebase Tutorial for iOS

hongssup_ 2020. 12. 15. 15:26
반응형

www.raywenderlich.com/3-firebase-tutorial-getting-started

 

Firebase Tutorial: Getting Started

In this Firebase tutorial, you’ll learn Firebase fundamentals including saving data, real-time sync, authentication, user status, and offline support.

www.raywenderlich.com

Swift Tutorial 5. Firebase 서버 연동하기

Grocery list App을 만들어보며 데이터 저장, 실시간 동기화, 인증, 사용자 상태, 오프라인 지원 등을 포함한 Firebase 기본 사항 배우기. 

 

● Firebase란?

기기들이 접속할 수 있는 서버 역할을 해주는 Google의 모바일 및 웹 어플리케이션 개발 백엔드 플랫폼.

● three core services (주요 기능) :

- a realtime database 실시간 데이터베이스
- user authentication 사용자 인증
- *hosting 서버 제공

 

< 튜토리얼 개요 >

1. Firebase 계정 생성 (및 Xcode 연동)

2. Firebase 데이터베이스

 - 데이터베이스 연결

 - Firebase 데이터 구조 - JSON

 - Firebase 데이터 참조 방식 - Database url, JSON key

3. Firebase 데이터 관리 (항목 추가, 제거 및 동기화)

 - Grocery 목록 새 항목 추가 - GroceryListTableViewController.swift - addButtonDidTouch(_:) - UIAlertController

 - Table View에 데이터 동기화 - 검색 observe(_:with:) 'DataSnapshot', 

 - Table View에서 항목 제거

 - 항목 구매 완료 체크 + 목록 정렬sorting - queryOrdered(byChild:)

4. Firebase Authentication 사용자 인증

 - 사용자 등록 Sign up Register

 - 로그인

 - 사용자 인증

 - 로그아웃

5. 온라인 사용자 관리 및 오프라인 지원

 - 온라인 사용자 모니터링

 - 오프라인 지원

1. Firebase 계정 설정

1) iOS 앱에 Firebse 추가 - iOS bundle ID 설정

2) 구성 파일 다운로드 - GoogleService-info.plist 다운받아서 Xcode에 넣어주기

3) Install Firebase SDK

튜토리얼 파일에는 이미 필요한 라이브러리들이 설치되어있다고 하니 이부분은 그냥 넘어가도 돼~ 라고 하지만,

2년 전 튜토리얼이다보니 설치해야하는 라이브러리 이름이 바뀌었다!

구글이 알려주는 대로 현 버전에 맞게 podfile에서 pod 'Firebase/Analytics' 를 추가로 입력해주고

터미널 가서 pod install 해주면 설치 완료!

인줄 알았으나... 뒤에가서 오류 폭탄...

2년 전 튜토리얼이다 보니 게시글 날짜에 맞춰 firebase library의 release 버전을 유추, 해당버전(5.1.0)으로 다시 install을 해주었다.

4) Add initialization code (초기화 코드 추가) - how to connect Firebase when your app starts

AppDelegate.swift에 FirebaseApp.configure() 추가 입력. 이거는 나와있는대로 따라하면 된다. 

5) 완료!

2. Firebase 연결해주기 Creating a connection to Firebase

**JSON이란? hierarchical key-value data structure 키-값 데이터 구조
Firebase에서 키key 는 URL이고 값value 은 number, string, boolean 또는 object(객체)가 될 수있는 임의의 데이터로 구성된다. 

우선 Firebase 데이터베이스는 JSON NoSQL 데이터베이스이므로 모든 데이터가 JSON으로 저장되기 때문에, 경로가 URL이 아니라 JSON 값으로 설정된다.

따라서 제공된 경로를 사용해 Firebase 데이터베이스에 대한 연결이 설정되므로, 이 속성을 통해 데이터를 지정된 위치에 저장하고 동기화할 수 있다. 그러므로

let ref = Database .database(). reference (withPath : “grocery-items”)

만 입력하면 된다더니

 

런타임 오류!!!!! 왜!!!!!! 🤬🤬🤬
*** Terminating app due to uncaught exception 'MissingDatabaseURL', reason: 'Failed to get FirebaseDatabase instance: Specify DatabaseURL within FIRApp or from your databaseForApp:URL: call.'

 

옛날 버전이라 그런건가 이유는 잘 모르겠지만 JSON 값이고 머고 URL을 입력하라고 한다. ㅡㅡ 응.. 알겠어..

let ref = Database.database(url: "https://grocr-3c7e7-default-rtdb.firebaseio.com/").reference(withPath: "grocery-items")

이렇게 Url을 추가해서 실행하니 잘 실행이 된다!!!!! 😭😂🙏🏻😭😂🙏🏻

휴.. 에러 검색해도 자료도 아무것도 없고 이거때매 몇시간 날렸다..

+ 참고로 여기서 넣어줄 Url은 Firebase Console 의 Realtime Database에 가면 찾을 수 있다. (Database 생성은 뒷단에서... 하고 다시 돌아오시길..)

순서가 뒤죽박죽이 되었지만, 다시 돌아가 Firebase에 Realtime Database를 생성하고 연결해주는 법을 알아보자면,

 

 

< 용어 정리 >

● hosting : 서버의 전체 또는 일정 공간을 이용할 수 있도록 임대해 주는 서비스 (대형 서버의 기능을 빌려쓰는 것)

● DataSnapshot : Firebase Database로부터 데이터를 읽어들이면, DataSnapshot 형식으로 데이터를 받아올 수 있다. 

● Closure : 간단하게 말하자면, 특정 함수가 반환되어 사라져도 그 속의 instance들은 소멸되지 않도록 보존해주는 캡쳐본(복사본)이라고 할 수 있다.

 

 

 

728x90
반응형