Firebase - React Native Android Setup
ยท
๐Ÿ”ฅ Firebase
โœ… Setuphttps://rnfirebase.io/#installation-for-react-native-cli-non-expo-projects React Native Firebase | React Native FirebaseWelcome to React Native Firebase! To get started, you must first setup a Firebase project and install the "app" module. React Native Firebase has begun to deprecate the namespaced API (i.e firebase-js-sdk rnfirebase.io
Firebase - React Native iOS Setup
ยท
๐Ÿ”ฅ Firebase
โœ… Setup1. Firebase project์—์„œ iOS app ์ถ”๊ฐ€2. Xcode ์•ˆ์—์„œ iOS bundle ID๋ฅผ ์ฐพ๋Š”๋‹ค.vscode์—์„œ iosํด๋”๋ฅผ reveal in finder๋ฅผ ๋ˆ„๋ฅธ ํ›„ socialcoin.xcworkspace๋ฅผ ๋ˆŒ๋Ÿฌ Xcode๋กœ ์—ด์–ด์ค€๋‹ค.๊ทธ๋ฆฌ๊ณ  General์—์„œ bundle ID๋ฅผ ์ฐพ๋Š”๋‹ค.3. Register App4. GoogleService-Info.plist file ๋‹ค์šด๋กœ๋“œ 5. Xcode์—์„œ ํ”„๋กœ์ ํŠธ์— GoogleService-Info.plist ์ถ”๊ฐ€ 6. Configure Firebase with iOS credentials 7. ๋งŒ์•ฝ ์—๋Ÿฌ ์‹œ # 1) Xcode DerivedData ์ •๋ฆฌ(์„ ํƒ์ด์ง€๋งŒ ๊ฐ•์ถ”)rm -rf ~/Library/Develope..
Firebase - Rules
ยท
๐Ÿ”ฅ Firebase
โœ… RulesFirebase๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋ถ€์ ์ ˆํ•œ ์ ‘๊ทผ์„ ์‹œ๋„ํ•˜๋ฉด ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Firebase ์ž์ฒด์ ์œผ๋กœ rules๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์ด ๊ธฐ๋Šฅ์œผ๋กœ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„œ๋ฒ„์—์„œ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ•  ์ˆ˜ ์žˆ๋‹ค.Firestore Database Rulesrules_version = '2';service cloud.firestore { match /databases/{database}/documents { match /tweets/{doc} { allow read, create: if request.auth != null; allow delete, update: if request.au..
Firebase - query(), getDocs(), onSnapshot()์„ ์‚ฌ์šฉํ•ด Firestore DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ
ยท
๐Ÿ”ฅ Firebase
โœ… query()getDocs()์— ๋„ฃ์–ด์ค„ query๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.const tweetsQuery = query( collection(db, "tweets"), orderBy("createdAt", "desc") ); โœ… getDocs()getDocs()๋กœ query์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ€์ ธ์˜จ๋‹ค.getDocs()๋Š” QuerySnapshot์„ returnํ•œ๋‹ค.const snapshot = await getDocs(tweetsQuery); โœ… Fetching ํ•ด์˜จ ๋ฐ์ดํ„ฐ๋“ค์„ state์— ์ €์žฅํ•˜๋Š” ๋™์ž‘์„ fetchTweets ํ•จ์ˆ˜์— ๋‹ด๋Š”๋‹ค.fetchTweets ํ•จ์ˆ˜๋Š” useEffect๋กœ ์‹คํ–‰ const [tweets, setTweets] = useState([]); const fetc..
Firebase - Firestore Database์™€ Storage์— document์™€ ์‚ฌ์ง„ ์—…๋กœ๋“œํ•˜๊ธฐ
ยท
๐Ÿ”ฅ Firebase
โœ… Firestore DatabaseaddDoc()์ธ์ž๋กœ ์ €์žฅํ•  ์œ„์น˜์˜ collection๊ณผ data๋ฅผ ๋ฐ›๋Š”๋‹ค.์ €์žฅํ•  ์œ„์น˜์˜ collection์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด collection() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.collection()์ธ์ž๋กœ Firestore ์ธ์Šคํ„ด์Šค์™€ collection์˜ ์ด๋ฆ„์„ ๋ฐ›๋Š”๋‹ค. const doc = await addDoc(collection(db, "tweets"), { tweet, order: Date.now(), createdAt: FormatDate(), username: user.displayName || "Anonymous", userId: user.uid, }); โœ… Storageref()ํŒŒ์ผ์ด ์—…..
Firebase - ์ด๋ฉ”์ผ & ๋น„๋ฐ€๋ฒˆํ˜ธ ๋กœ๊ทธ์ธ๊ณผ ์†Œ์…œ ๋กœ๊ทธ์ธ(Github)
ยท
๐Ÿ”ฅ Firebase
โœ… Setup1. Firebase ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ 2. Firebase ์„ค์น˜npm install firebase 3. ์ฝ˜์†”์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ firebase.ts๋ฅผ ์ƒ์„ฑํ•ด ์•ˆ์— ๋„ฃ์–ด์ค€๋‹ค. โœ… ์ด๋ฉ”์ผ & ๋น„๋ฐ€๋ฒˆํ˜ธ ๋กœ๊ทธ์ธFirebase ์ฝ˜์†”์˜ Authentication์—์„œ ์ด๋ฉ”์ผ & ๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•œ ๋‹ค์Œ, ์ฝ”๋“œ์—์„œ initializeํ•œ๋‹ค.getAuth(app)import { getAuth } from "firebase/auth";export const auth = getAuth(app); createUserWithEmailAndPassword(auth, email, password)ํšŒ์› ์ •๋ณด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ์‹œ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ  ๋กœ๊ทธ์ธ ์‹œํ‚จ๋‹ค.UserCredential์„ returnํ•œ๋‹ค. (oper..
๋…ธ๋งˆ๋“œ์ฝ”๋” - ๊ฐ•์˜ ์˜์ƒ๊ณผ ๋˜‘๊ฐ™์ด ๋”ฐ๋ผ ๋งŒ๋“ค๊ธฐ (ํŠธ์œ„ํ„ฐ ํด๋ก ์ฝ”๋”ฉ ์ฑŒ๋ฆฐ์ง€)
ยท
๐Ÿ–๏ธ ๋…ธ๋งˆ๋“œ์ฝ”๋”
โœ… ์ž๊ธฐ์†Œ๊ฐœ์›น ๊ธฐ์ดˆ ์Šคํ„ฐ๋””๋ฅผ ๋งˆ์น˜๊ณ  ํ˜„์žฌ ์บ๋Ÿฟ๋งˆ์ผ“ ํด๋ก ์ฝ”๋”ฉ(v12)์„ ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ๋Š” ์ข…ํ™”๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.ํŠธ์œ„ํ„ฐ ํด๋ก ์ฝ”๋”ฉ ์ฑŒ๋ฆฐ์ง€๊ฐ€ ์—ด๋ ธ๊ธธ๋ž˜ ๋ฐ”๋กœ ์ฐธ๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ์™„๊ฐ•ํ•œ ์ง€๋Š” ๊ฝค ๋˜์—ˆ๋Š”๋ฐ, ๊ธฐ์–ต์„ ๋˜์‚ด๋ ค์„œ ์ฑŒ๋ฆฐ์ง€๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ณต์Šต์„ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. โœ… ๋ฉ”์ธ ํŽ˜์ด์ง€ ์™€์ด์–ดํ”„๋ ˆ์ž„ ์‚ฌ์ง„ ๊ณผ์ œ์— ์ ํ˜€์žˆ๋˜ ๋ฐœ์‚ฌ๋ฏน์„ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค์–ด๋ดค์Šต๋‹ˆ๋‹ค.โœ… ํฌ์ธํŠธ ์ƒ‰์ƒ / ๋กœ๊ณ  / ๊ธฐํƒ€ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ์‚ฌํ•ญ๊ฐ•์˜ ์˜์ƒ๊ณผ ์ตœ๋Œ€ํ•œ ๋˜‘๊ฐ™์ด ๋งŒ๋“ค์–ด๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.ํ›„์— ์ƒ๊ฐ๋‚˜๋Š” ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ๋ฉด ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๊ณผ ์ƒˆ๋กœ์šด ๋””์ž์ธ์œผ๋กœ ๋งŒ๋“ค์–ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง ๋‹ค๋งŒ! Form ๋ถ€๋ถ„์€ react-hook-form์„ ์‚ฌ์šฉํ•˜์—ฌ ์žฌ๊ตฌํ˜„ ํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค :) โœ… ๊ณ ๋ฏผ, ๊ณต์œ ํ•˜๊ณ  ์‹ถ์€ ํŒํ˜„์žฌ ๋ชฉ๊ฐ๊ธฐ์— ์‹ฌํ•˜๊ฒŒ ๊ฑธ๋ ค ์žˆ์–ด์„œ ๊ณต๋ถ€๋„ 4์ผ์งธ ๋ชป ํ•˜๊ณ  ์žˆ๋Š” ์ปจ๋””์…˜์ธ๋ฐ, ๊ธฐ์–ต์„ ..