- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬 강좌
- 파이썬 강의
- 자료구조 강의
- 프로그래밍
- python 중간고사
- 코딩문제
- 크롤링
- python data structure
- 파이썬
- 알고리즘
- Crawling
- 파이썬 자료구조
- 파이썬 입문
- 셀레니움
- 면접 파이썬
- c언어
- 알고리즘 강좌
- 채용문제
- 자료구조
- 중간시험
- 대학시험
- 알고리즘 강의
- 파이썬3
- selenium
- 쉬운 파이썬
- 파이썬 알고리즘
- 파이썬활용
- gdrive
- 기말시험
- 코딩시험
반원 블로그
[자료 찾기] react native expo로 firebase 사용하기 본문
스토리지가 필요한 앱을 만들 수 있어야 가능한 범위가 늘어나고,
주로 firebase(firestore)나 mongoDB 를 쓰지않을까 싶어 미리 자료를 모아두자
EXPO firebase 문서
- https://docs.expo.io/guides/using-firebase/
expo install firebase
로 SDK 설치import * as firebase from 'firebase';
SDK 기본 설정 config
import * as firebase from 'firebase';
// Optionally import the services that you want to use
//import "firebase/auth";
//import "firebase/database";
//import "firebase/firestore";
//import "firebase/functions";
//import "firebase/storage";
// Initialize Firebase
const firebaseConfig = {
apiKey: "api-key",
authDomain: "project-id.firebaseapp.com",
databaseURL: "https://project-id.firebaseio.com",
projectId: "project-id",
storageBucket: "project-id.appspot.com",
messagingSenderId: "sender-id",
appId: "app-id",
measurementId: "G-measurement-id"
};
firebase.initializeApp(firebaseConfig);
추가로 파이어베이스 저장소의 접근 규칙에 다음처럼하고 실제 앱을 출시했을 때는 규칙 검토를 해야한다.
firebase 샘플 규칙
{
"rules": {
".read": true,
".write": true
}
}
데이터 저장 및 업데이트 받기
- (가정) 모든 사람들이 볼 수 있도록 최고 점수가 Firebase에 저장되는 게임을 만들고 있다
(상황1) 최고점수를 갱신하여 firebase에 저장해야할 경우
function storeHighScore(userId, score) {
firebase.database().ref('users/' + userId).set({
highscore: score
});
}
(상황2) 다른 클라이언트가 특정 사용자의 최고 점수에 대한 업데이트를 수신하기를 원한다
Firebase를 사용하면 특정 데이터 참조에 리스너를 설정하고 데이터가 업데이트 될 때마다 알림을 받을 수 있다.
아래 코드는 최고 점수가 업데이트 될 때마다 콘솔에 인쇄됩니다.
setupHighscoreListener(userId) {
firebase.database().ref('users/' + userId).on('value', (snapshot) => {
const highscore = snapshot.val().highscore;
console.log("New high score: " + highscore);
});
}
Expo, firebase를 이용한 다른 설명글
기존 위의 내용을 봐도 되지만, ios, android 설정이나 기타 설치 내용에 대해서 외부링크로 걸려있어서 하나로 모아있는 가이드를 더 찾아봤다.
- 데모 프로젝트
git clone https://github.com/dooboolab/hackatalk-mobile.git
- https://github.com/dooboolab/hackatalk-mobile
- 파이어베이스 프로젝트 생성
- SignIn Firebase console (Google account가 필요합니다)
- Create Firebase project (프로젝트 이름과 애널리틱스 위치를 설정합니다)
- Click the firebase project (생성된 프로젝트를 클릭합니다)
- 플랫폼 추가
- Add iOS applications (iOS 어플리케이션을 추가)
- Download GoogleService-Info.plist to working project root path (해당 파일을 다운로드 받으시고, 작업중인 프로젝트 최상위 패스에 추가 합니다)
- Skip other steps (다른 스탭들은 스킵 하셔도 됩니다)
- Add android application (안드로이드 어플리케이션을 추가)
- Set android package id (app.json에 사용하게될 android package id를 원하는대로 셋팅)
- Download google-services.json to hackatalk project root path (해당 파일을 다운로드 받으시고, 작업중인 프로젝트 최상위 패스에 추가 합니다)
- 사용하려는 인증 방법 추가
- Turn On Google Authentication (인증 방법 추가)
- 프로젝트에 필요 라이브러리 설치
npm install -g expo-cli
프로젝트 적용
Set app.json (app.json 셋팅)- expo.android.package 의 경우 1번 단계에서 생성한 package name을 넣는다.
- expo.ios.bundleIdentifier 의 경우 1번 단계에서 생성한 bundle identifier를 넣는다.
프로젝트 실행해서 확인(1)
npm run android
또는npm run ios
- 하지만 google signIn의 경우 눌러보면 alert 가 뜬다. 이는 expo가 아닌 standalone 모드에서만 작동 가능하여 나오는 메시지이며. 현재 expo-google-sign-in 을 사용 중인데, expo 버전이 올라가면서 정책이 변경되었다.
- Standalone 모드를 이용하여 Google SignIn 해결
expo fetch:android:hashes
를 입력하면for example: Google Certificate Fingerprint: sd:fs:df:sd:fs:df Google Certificate Hash (SHA-1): sdfsdfsdfsdf Google Certificate Hash (SHA-256): sdfsdfsdfsdfasdasdasd
가 나오는데
SHA-1 or SHA-256 을 2번 단계에서 생성한 Firebase Android Project SHA 인증서 지문에 추가.
Set expo.android.config.googleSignIn.certificateHash in app.json file (app.json 파일에 추가한 SHA 인증서 지문을 설정)
- 마지막 프로젝트 빌드
expo build:android
expo build:ios
https://expo.io/artifacts/:uuid
형태로 생성된 apk 혹은 ipa가 생성된다.
'2018~ > react native' 카테고리의 다른 글
1회차 - 08 ES6 문법 - Arrow function (0) | 2020.07.01 |
---|---|
1회차 - 07 ES6 문법 - rest operator (0) | 2020.06.30 |
1회차 - 06 componentDidUpdate , ReactNative의 LifeCycle API (0) | 2020.06.30 |
1회차 - 05 ES6 문법 - Async, Await (0) | 2020.06.30 |
1회차 - 04 react native 날씨 앱 따라 만들기(3), 지역 가져오기 (1) | 2020.06.29 |
1회차 - 03 react native 날씨 앱 따라 만들기(2), 리액트 네이티브 Nox, BlueStack으로 연동 개발하기 (0) | 2020.06.29 |
1회차 - 02 react native 날씨 앱 따라 만들기(1) (0) | 2020.06.29 |
1회차 - 01 ES6 문법 - Babel 표기법. String Literal, 객체, 배열, Spread Operator, for of 문 (0) | 2020.06.28 |