Flutter ์ฑ ๊ฐ๋ฐ์์ Firebase๋ ๋ฐ์ดํฐ ์ ์ฅ, ์ฌ์ฉ์ ์ธ์ฆ, ์๋ฆผ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๋ค์๊ฒ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด ๊ธ์์๋ Firebase CLI๋ฅผ ์ฌ์ฉํ์ฌ Flutter ํ๋ก์ ํธ์ Firebase๋ฅผ ์ฝ๊ฒ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค.
Firebase CLI ์ค์น ๋ฐ ๋ก๊ทธ์ธ
Firebase CLI๋ Firebase ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๊ณ Cloud Firestore, Cloud Functions ๋ฑ์ ์๋น์ค๋ฅผ ๋ก์ปฌ์์ ํ ์คํธํ๋ ๋ฐ ํ์ํ ๋๊ตฌ์ ๋๋ค. ์ค์น๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
- ๋ค์ ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ ์ ๋ ฅํ์ฌ Firebase CLI๋ฅผ ์ค์นํฉ๋๋ค:์ค์น ๊ณผ์ ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
curl -sL https://firebase.tools | bash
- ์ค์น๊ฐ ์๋ฃ๋๋ฉด,
firebase login
๋ช ๋ น์ด๋ก Firebase์ ๋ก๊ทธ์ธํฉ๋๋ค. ์ด๋ฏธ ๋ก๊ทธ์ธ๋ ๊ณ์ ์ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉดfirebase login --reauth
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
![Firebase CLI ๋ก๊ทธ์ธ ํ๋ฉด](https://blog.kakaocdn.net/dn/uOdS8/btryPTl2v2G/eq6EtkjXgiuBJHHiOjGdHk/img.png)
![Firebase CLI ๋ก๊ทธ์ธ ์๋ฃ ํ๋ฉด](https://blog.kakaocdn.net/dn/9Ls5L/btryOT1g4iL/UwWmMABqcdzT2wq44ALyrK/img.png)
Flutter ํ๋ก์ ํธ Firebase ์ค์ ๋ฐ ์ฐ๊ฒฐ
Flutter ํ๋ก์ ํธ์ Firebase๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ช ๊ฐ์ง ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํฉ๋๋ค.
๋จผ์ , FlutterFire CLI๋ฅผ ์ค์นํฉ๋๋ค:
dart pub global activate flutterfire_cli
PATH ํ๊ฒฝ๋ณ์์ FlutterFire CLI ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํฉ๋๋ค:
export PATH="$PATH":"$HOME/.pub-cache/bin"
flutterfire configure
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Flutter ํ๋ก์ ํธ์ Firebase๋ฅผ ์ค์ ํฉ๋๋ค. ์ด ๊ณผ์ ์์ ๊ธฐ์กด ํ๋ก์ ํธ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ฒ๋๋ฉด android ํ๋ก์ ํธ๋ ์๋์ผ๋ก firebase ์ค์ ์ด ๋๋๋ฐ ios์ ๊ฒฝ์ฐ bundle id ๋ฅผ ์ ์ ์๊ธฐ๋๋ฌธ์ ์ง์ ์ ๋ ฅํด์ฃผ์ด์ผํ๋ค.
- ios/Runner.xcodeproj/project.pbxproj ํ์ผ์์ PRODUCT_BUNDLE_IDENTIFIER ๋ฅผ ์ฐพ์ผ๋ฉด(cmd + f) bundle id๊ฐ ์ ํ์๋ค. ๊ทธ๋ ๊ฒ๋๋ฉด firebase ํ๋ก์ ํธ์ android ์ ios ๋ชจ๋ ๊ธฐ๋ณธ ์ค์ ์ด ์๋ฃ๋๋ค.
์ฐธ๊ณ
'flutterfire: line 8: dart: command not found' ๋ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ ํด๋น ์๋ฌ๋ dart๊ฐ ์ค์น๋์ง ์์์ ๋ฐ์ํ์ผ๋ฏ๋ก
dart๋ฅผ ์ค์นํด์ฃผ๋ฉด ํด๊ฒฐ๋๋ค.
brew tap dart-lang/dart
brew install dart
Flutter ํ๋ก์ ํธ ์ฝ๋์์ firebase initialize
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
runApp(const MyApp());
}
์ ์ฝ๋๋ฅผ main์ ์ ๋ ฅํ๋ฉด firebase๊ฐ ํ๋ซํผ๋ณ ์ด๊ธฐํ๋ฅผ ์งํํ๊ฒ๋๋ค.
I/FirebaseApp(29667): Device unlocked: initializing all Firebase APIs for app [DEFAULT]
์ค์น๊ฐ ์ ์งํ๋์๋ค๋ฉด ์ฑ์ ์คํ ์ ์์๊ฐ์ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์๋ค.