www.raywenderlich.com/3-firebase-tutorial-getting-started
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들은 소멸되지 않도록 보존해주는 캡쳐본(복사본)이라고 할 수 있다.
'Swift iOS 앱 개발 > Swift 튜토리얼' 카테고리의 다른 글
[Stanford iOS] Lecture 1. SwiftUI를 만나다 (0) | 2021.03.30 |
---|---|
6. Swift SceneKit Tutorial _3D 게임 만들기 (0) | 2020.12.24 |
4. Swift_ Tesseract OCR Tutorial for iOS (0) | 2020.12.14 |
3. Swift CocoaPods Tutorial_CocoaPods 설치 및 오류 해결 (0) | 2020.12.12 |
2. Swift Tutorial_ Auto Layout by Code_ 스토리보드 말고 코드로 Auto Layout 구현하기 (0) | 2020.12.12 |