์์ผ๋ก Flutter ๊ด๋ จ ํฌ์คํ ์ ์ง์ค์ ์ผ๋ก ์ ๋ก๋ํ ์์ ์ด๋ค.
๊ทธ๋์ Flutter ๊ฐ๋ฐ์ ์งํํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ๋๋ถ๋ถ RDBMS(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค)์ WebAPI ์๋ฒ ๊ตฌํ์ ํตํด
์จ๋ผ์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํํด ์์๋ค.
ํ์ง๋ง ์ปค๋ฎค๋ํฐ ์ฑ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์์ฒญ ๊ฑด์ด ์๋น์ด ๋ง์์ง๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ Back-End์ ์ ํ์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ๋ฐ๊ฟ์ผ ํ ํ์์ฑ์ ๋๋ผ๊ฒ ๋์๋ค.
์ค๋๋ถํฐ ์ฐ์ตํด๋ณผ Back-End ๊ธฐ์ ์ Firebase์ด๋ค.
์ฌ์ค NoSQL(Not-Only-SQL) ๋ค ์ค MongoDB์ Firestore ์ค ๊ณ ๋ฏผ์ ๋ง์ด ํ๋๋ฐ
MongoDB๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Node.js๋ฅผ ์๋ฌํ๊ณ ์๋ฒ ๊ตฌ์ถ๊น์ง ๋ค์ ์งํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ท๋ชจ ์ฑ์ผ๋ก ์์ํ๊ธฐ์ ๋น์ฉ์ด ๋ง์ด ๋ค ๊ฒ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ค์๋ค.
๋ฐ๋ผ์ ์ด๋ฏธ Back-End์ ์ธํ๋ผ๊ฐ ๋๋ถ๋ถ ๊ตฌ์ถ๋ Firebase ์ฌ์ฉ์ ์ ํํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Cloud Firestore๋ฅผ ์ด์ฉํ๊ฒ ๋์๋ค.
๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์๋ Cloud Firestore๋ฅผ ํตํด ์ค์๊ฐ ์ฑํ ์ด ๊ฐ๋ฅํ ์ฑ์ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํ๋ค.
์ฐ์ DB์ธํ ์ ๋จผ์ ์งํํด์ผ ํ๋ค.
์๋ ๋งํฌ๋ฅผ ํตํด ํ์ด์ด๋ฒ ์ด์ค ์ฝ์๋ก ์ด๋ํด์ฃผ๋๋ก ํ๋ค.
https://console.firebase.google.com/
๋ก๊ทธ์ธ์ด ์๋ฃ๋์๋ค๋ฉด ํ๋ก์ ํธ ์ถ๊ฐ ๋ฒํผ์ ๋๋ฌ์ค๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ์ํ๋ ๊ฒ์ผ๋ก ์ง์ ํด์ฃผ๋๋ก ํ๋ค.
์ ๋๋ฆฌํฑ์ค๋ ๋์ค์ ์ฌ์ฉํ๋ฉด ๋๋ ์ง๊ธ์ ์ธ์ฒดํฌ!
๊ทธ๋ฌ๋ฉด ์๋ก์ด ์ฝ์์ด ์๊ธฐ๊ฒ ๋๊ณ ์๋ ๋นจ๊ฐ์ ๋๊ทธ๋ผ์ Flutter ์์ด์ฝ์ ํด๋ฆญํ๋๋ก ํ๋ค.
์ด๋ฒ Flutter 3.0.0๋ถํฐ Firebase์์๋ Flutter ์ง์์ ์ ๊ทน์ ์ผ๋ก ์งํํ๋ ๊ฒ ๊ฐ๋ค.
์๋ฌธ์ผ๋ก ๋์์ง๋ง ํฌ๊ฒ ์ด๋ ค์ด ๋ด์ฉ์ ์๋๋ค.
์์๋๋ก
1. Firebase CLI๋ฅผ ์ค์นํ๊ณ ํด๋น ์ฝ์๋ก ๋ก๊ทธ์ธ์ ์งํํ๋ค
2. Flutter SDK ๊ฐ ์ค์น๋์ด ์์ด์ผ ํ๋ค.
3. Firebase๋ฅผ ์ฐ๋ํ ํ๋ฌํฐ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
2,3 ๋ฒ์ ์ด๋ฏธ ๋ค ์ค์น๊ฐ ๋๋ค๊ณ ๊ฐ์ ์ ํ๊ณ
1๋ฒ์ ๊ฒฝ์ฐ ์กฐ๊ธ ์ค๋ช ์ ์งํํ๊ฒ ๋ค.
https://firebase.google.com/docs/cli?authuser=0&hl=ko#windows-npm
ํด๋น ๋ฌธ์์์ Firebase CLI๋ฅผ ์ค์นํ ์ด์์ฒด์ ๋ฅผ ์ ํํ๋ค.
๊ทธ๋ฌ๋ฉด ํ๋จ์ผ๋ก ์ด๋ํ๊ฒ ๋๋๋ฐ ๋ ๋ฆฝ์คํํ์ ์ ํํ ์ง npm(๋ ธ๋ ํจํค์ง ๊ด๋ฆฌ์)๋ฅผ ์ ํํด์ ์งํํ ์ง ๊ณ ๋ฅด๋ ๊ฒ ๋์จ๋ค. ์ ํ์ ๋ณธ์ธ์ด ์ํ๋ ๊ฒ์ผ๋ก ํ๋๋ฐ ๋ ๋ฆฝ์คํํ์ ํด์ ์๋ ๊ฒฝ์ฐ npm์ ์ด์ฉํ๋๋ก ํ๋ค. (๊ฐ์ธ์ ์ผ๋ก npm์ ์ถ์ฒ, ๋ ๋ฆฝ์คํํ์ ํ๊ฒฝ๋ณ์ ์ธํ ์ด ๋์ง ์์ ์ค๋ฅ๊ฐ ๋ฐ์)
๋๋ npm ๊ธฐ์ค์ผ๋ก ์ค๋ช ์ ํ๋๋ก ํ๊ฒ ๋ค.
์ฌ์ดํธ์์ Node.js๋ฅผ ๋ฐ์ ์ค์น๋ฅผ ํ๋ค (๋ฒ์ ์ LTS(LongTimeSupport)๊ฐ ๋ถ์ ๊ฒ ์ ํฉํ๋ค)
๊ทธ๋ฆฌ๊ณ ์ฝ์ ์ฐฝ์ ์ด๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค.
npm install -g firebase-tools
์ด๋ฌ๋ฉด ๋์ถฉ ์ธํ ์ firebase ํ๊ฒฝ๋ณ์ ์ค์ ์ ์๋ฃ๋ ๊ฒ์ด๋ค.
์ด์ ๋ด PC์์ firebase ํ๊ฒฝ์ ์ฌ์ฉ ๊ฐ๋ฅํด์ก์ผ๋ ๋ก๊ทธ์ธ์ ์งํํ๋๋ก ํ๋ค.
์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
firebase login
๋์ ๊ฒฝ์ฐ๋ ์ด๋ฏธ ์ด์ ์ ๋ก๊ทธ์ธ์ ํ์๊ธฐ ๋๋ฌธ์ Already Logged in ๊ธ์๊ฐ ๋จ๊ฒ ๋๋ค.
PCํ๊ฒฝ์์ ๋ก๊ทธ์ธ์ด ์๋ฃ๋์์ผ๋ฉด ๋ค์ Firebase ์ฝ์๋ก ์ด๋ํ์.
์ฐจ๋ก๋๋ก ์ฝ์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค.
dart pub global activate flutterfire_cli
์ด๋ ๊ฒ ๋จ๊ฒ ๋๋ฉด flutterfire_cli๊ฐ ํ์ฑํ๋ ์ํ์ด๊ณ
์ด๋ฒ์ firebase๋ฅผ ์ฐ๋ํ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ๊ฑฐ๊ธฐ์์ ์ฐ๋ํด์ผ ํ๋ค.
์ด๋ฆ์ ๋์ถฉ flutter_test_chatapp์ผ๋ก ์ง์๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ ์ฝ์์์ ๋ค์์ ์ ๋ ฅํด์ผ ๋๋ ๋ช ๋ น์ด๋ฅผ ๋ฃ๊ณ ์คํํ๋ค.
์ฌ๊ธฐ์ ํ๋ซํผ์ ์ ํํ๋ผ๊ณ ๋์ค๋๋ฐ ํ์ดํ ํค๋ก ์ด๋ํ๊ณ ์คํ์ด์ค๋ก ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ๋ฉด ๋๋ค.
์ ์ฉํ ํ๋ซํผ์ ์ ํ์ผ๋ฉด ์ํฐ!
์ด ํ๋ฉด์ฒ๋ผ ๋๋ฉด ๋ด ํ๋ฌํฐ ํ๋ก์ ํธ์ ํ์ด์ด๋ฒ ์ด์ค ์ฐ๋์ด ์๋ฃ๋ ๊ฒ์ด๋ค.
์ค์ ๋ก Android๋น๋ ํด๋๋ก ๊ฐ๋ฉด ์ด์ ์ google-service.json ํ์ผ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ฒ๋ผ
์ฐ๋์ด ๋์ด์๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
์ด์ ์ฑ์์ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ด๊ธฐํ๋ฅผ ํด์ผ ํ๋ค.
์๋ ์ปค๋งจ๋๋ฅผ ํ๋ก์ ํธ ์ฝ์์ ์ ๋ ฅํ์.
flutter pub add firebase_core
flutter pub add cloud_firestore
๊ทธ๋ฌ๊ณ pubspec.yaml ํ์ผ๋ก ์ด๋ํ๊ฒ ๋๋ฉด
์ด๋ ๊ฒ ํ์ด์ด๋ฒ ์ด์ค์ ํ์ด์ด์คํ ์ด ํ๋ฌ๊ทธ์ธ์ด ์ถ๊ฐ๊ฐ ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ทธ๋ค์ main.dart ํ์ผ ์ต์๋จ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ์ ํด์ฃผ๋๋ก ํ๋ค.
์ฌ๊ธฐ์ Firebase.initializeApp()์ ์ฑ์ ์คํํ ๋ Firebase๋ฅผ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ด๊ธฐํํ๋๋ก ํ๋ ๊ฒ์ด๊ณ
WidgetsFlutterBinding.ensureInitialized()๋ runApp์ผ๋ก ์ฑ์ด ์คํ๋๊ธฐ ์ ์ ๋น๋๊ธฐ๋ก ์ง์ฐ์ด ๋๋๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ ์ญํ ์ ํ๋ค. ๋ฐ๋ผ์ main() ๋ฉ์๋๋ async๋ฅผ ๋ถ์ฌ ์ฌ์ฉ์ ํ ์๊ฐ ์๊ฒ ๋๋ค.
์ด๋ ๊ฒ ์ฑ์์ ํ์ด์ด๋ฒ ์ด์ค ์ฌ์ฉ์ ์ํ ์ฐ๋์์ ์ด ๋๋ฌ๋ค.
์ค์ ๋ก ์ฑํ ์ฑ ๊ตฌํ์ ๋ค์ ํฌ์คํ ๋ถํฐ ๊ณ์ ํ ์์ ์ด๋ค.