firebase는 구글이 인수한 모바일 앱 개발에 최적화된 기능을 제공하는 서비스이다.
플러터 뿐만이 아니라 다른 앱 개발 프레임 워크 그리고 웹이나 서버에서도 이용할 수 있다.
https://firebase.google.com/?hl=ko
curl -sL https://firebase.tools | bash
firebase login
dart pub global activate flutterfire_cli
flutterfire configure
다음에서 플랫폼을 고른다.(web, android, ios, macos중에...)
설정이 끝나면
firebase_option.dart파일과
android파일에 google-sevices.json이 생성되면 성공이다.
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
이렇게 초기화를 설정해줘야 한다.
갑자기 ios로도 필요해서 연동했다.
방법은 간단하게 파베 ios 연동 방법을 그대로 따라하면 된다.
이미지 보이는 것처럼 차례로 내 프로젝트에 앱번들 아이디랑 앱 닉넴임을 적어주고 하면 된다.
ios에 마우스 오른쪽 키를 눌러 Xcode로 열고 Runner안에 GoolgleService-Info파일을 넣어준다.
Ruuner > Info > URL Types에 +를 눌러서 URL Schemes를 입력해준다.
나는 CocoaPods를 사용하여 Firebase를 설치하는 방법을 사용했다.
CocoaPods 눌러서 스크롤을 좀만 내리면
sudo gem install cocoapods
pod init
pod install --repo-update
open your-project.xcworkspace
이렇게 나오는데 위에서 아래 순으로 설치를 해주면 된다.
설치하면서 업데이트를 해주는거다.
여기서 꼭 설치할때 터미널에서 cd ios를 먼저 해주고 그 안에서 해줘야한다.
이렇게 되면 설치 완료!
실행하면 된다.
코틀린 버전이 자꾸 안맞는다고 뜨면
프로젝트에 있는 settings.gradle에 들어가서 pligins에 코틀린을 핫로드에 뜨는 최신버전으로 바꿔준다.
id "org.jetbrains.kotlin.android" version "1.9.0" apply false ```
iOS
with version 12.0
on target Runner
because no platform was specified. Please specify a platform for this target in your Podfile. See https://guides.cocoapods.org/syntax/podfile.html#platform
.다음과 같이 뜨면 ios>Podfile를 들어가서 버전을 확인해보면 된다.
거의 12이하로 되어있을거다.
platform :ios, '13.0'
이 버전을 12 이상으로 바꿔주면 된다
GoogleService-Info.plist 파일이 Runner안에 잘 있는지 확인
add()
add()함수를 이용해서 문서를 삽입하면 파이어 스토어에서 자동으로 문서의 ID값을 생성해줌.
final data = {
'name' : '파이어베이스',
'age' : '10'
'Fruit' : ['사과', '바나나', '파인애플']
};
FirebaseFirestore.instance
.collection('person')
.add(data);
.collection()함수는 문서를 저장할 컬렉션을 저장함
set()
직접 문서의 ID값을 지정할 수 있다.
final data = {
'name' : '파이어베이스',
'age' : '10'
'Fruit' : ['사과', '바나나', '파인애플']
};
FirebaseFirestore.instance
.collection('person')
.doc('1') //문서의 ID값을 넣어줄 수 있다.
.set(data);
delete()
FirebaseFirestore.instance
.collection('person')
.doc('1') //삭제할 문서의 ID값을 입력해준다.
.delete();
Stream 실시간으로 컬렉션 업데이트 받기
FirebaseFirestore.instance
.collection('person')
.snapshots();
Future로 일회성으로 데이터 받아오기
한번만 받아오고 지속적으로 업데이트 하지는 않는다.
FirebaseFirestore.instance
.collection('person')
.get();
FirebaseFirestore.instance
.collection('person')
.doc('1')
.snapshots(); //get으로 받아올수도 있음
update()
FirebaseFirestore.instance
.collection('person')
.doc('1')
.update({
'name' : '지수'
});