๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“š Database/Firebase20

[Firebase] Cloud Function์„ ์‚ฌ์šฉํ•ด์„œ Hello World๋ฅผ ๋„์›Œ๋ณด์ž ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋žœ๋งŒ์— ํŒŒ์ด์–ด๋ฒ ์ด์Šค ๊ด€๋ จํ•ด์„œ ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ๋„ค์š”. ์˜ค๋Š˜ ์•Œ์•„๋ณผ๊ฑด ํด๋ผ์šฐ๋“œ ํŽ‘์…˜์ด๋ผ๋Š” ๊ฒƒ์ธ๋ฐ์š”. Cloud Function ๋จผ์ € ํด๋ผ์šฐ๋“œ ํŽ‘์…˜์ด๋ž€? ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ์ €๋ฒˆ์— ์ €ํฌ๊ฐ€ ํŒŒ์ด์–ด์Šคํ† ์–ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์ž–์•„์š”? (ํ˜น์‹œ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋จผ์ € ๋ณด๊ณ ์™€์ฃผ์„ธ์š”~) ์ธ์Šคํƒ€๊ทธ๋žจ์œผ๋กœ ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ๋งŒ์•ฝ ํŒ”๋กœ์›Œ๊ฐ€ 100๋งŒ๋ช…์ด ์žˆ๊ณ  ๊ทธ ํŒ”๋กœ์›Œ๋“ค์˜ ํฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”? ์ง์ ‘ ์•ฑ ๋‚ด์˜ ์ฝ”๋“œ์—์„œ ํŒŒ์ด์–ด์Šคํ† ์–ด ์•ˆ์˜ ์ˆ˜๋ฐฑ๋งŒ๊ฐœ์˜ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ๋ฐ›์•„์™€์„œ ์ •๋ ฌํ•ด์•ผ ํ• ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์•ฑ์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋ชจ๋„ ๋„ˆ๋ฌด ์‹ฌํ•ด์ง€๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ๋ถ€๋‹ด์Šค๋Ÿฌ์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ํด๋ผ์šฐ๋“œ ํŽ‘์…˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด node.js์—์„œ ์›ํ•˜๋Š” Httpํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋†“๊ณ  ์•ฑ ํด๋ผ์ด์–ธํŠธ์—.. 2020. 12. 6.
Cloud Firestore ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ (addSnapshotListener) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํŒŒ์ด์–ด์Šคํ† ์–ด์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๋€ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. addSnapshotListener๋ฅผ ๋‹ฌ์•„์ฃผ๋ฉด ๋˜๋Š”๋ฐ์š”. ์ด ๊ธฐ๋Šฅ์€ ์—ฐ๊ฒฐ๋œ ์ฃผ์†Œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ์š”. ์ด๊ฒƒ์€ ์•„์ฃผ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์œ ์šฉํ•œ ๊ฒƒ์ด๋ผ์„œ ์ด๊ณณ์— ์ ์–ด๋†“๊ฒ ์Šต๋‹ˆ๋‹ค!! ์ž ๊ทธ๋Ÿผ ์˜ˆ์‹œ๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € users๋ผ๋Š” ์ฝœ๋ ‰์…˜์— document๋กœ user1์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  nameํ•„๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์›ํ•˜๋Š” ์ด๋ฆ„์„ ์จ์ค๋‹ˆ๋‹ค. xcode๋กœ ๋Œ์•„๊ฐ€์„œ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์ด๋™ํ•ด ๋ทฐ์ฝ˜ํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ด๋ฆ„์„ ๋‚˜ํƒ€๋‚ผ Label ํ•˜๋‚˜ ๋ฐ”๊ฟ”์ค„ ์ด๋ฆ„์„ ์ ์„ TextField ๊ทธ๋ฆฌ๊ณ  ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์ค„ Button์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๋ทฐ์ฝ˜ํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•˜์—ฌ Label,Button,TexField.. 2020. 9. 12.
[Firebase] ํŒŒ์ด์–ด์Šคํ† ์–ด์— ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋ฐ ์ €์žฅํ•˜๊ธฐ(Cloud Firestore Data Create & Store) Firestore๋Š” ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ NoSQL ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ์ธก ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์–ด์Šคํ† ์–ด๋Š” ์ฝœ๋ ‰์…˜ - ๋„ํ๋จผํŠธ - ํ•„๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝœ๋ ‰์…˜์€ ๋„ํ๋จผํŠธ๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ง‘ํ•ฉ์ด๊ณ  ๋„ํ๋จผํŠธ๋Š” ๋‹ค์–‘ํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฌธ์„œ์ด๊ณ  ๋‹ค์–‘ํ•œ ๊ฐ’์€ ํ•„๋“œ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ถ•๊ตฌ์„ ์ˆ˜๋ผ๋Š” ์ฝœ๋ ‰์…˜์ด ์žˆ๋‹ค๋ฉด ์ถ•๊ตฌ์„ ์ˆ˜์— ํ•ด๋‹น๋˜๋Š” ๋ฐ•์ง€์„ฑ,์†ํฅ๋ฏผ,์•ˆ์ •ํ™˜ ๋“ฑ์ด ๋„ํ๋จผํŠธ์— ํ•ด๋‹น๋  ๊ฒƒ์ด๋ฉฐ ๋ฐ•์ง€์„ฑ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณต๊ฒฉ๋Šฅ๋ ฅ,์ˆ˜๋น„๋Šฅ๋ ฅ,์ฒด๋ ฅ ๋“ฑ์ด ํ•„๋“œ๊ฐ’์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € FirebaseFirestore๋ฅผ importํ•ด์ค๋‹ˆ๋‹ค. db๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. -> let.. 2020. 5. 28.
[Firebase iOS] ํŒŒ์ด์–ด๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜(Firebase Transaction) Swift ์˜ค๋Š˜์€ ํŒŒ์ด์–ด๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๊ฐ€ ๋ด…์‹œ๋‹ค. ๋จผ์ € ํŠธ๋žœ์žญ์…˜์ด๋ž€ 1๊ฐœ ์ด์ƒ์˜ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์ž‘์—…์˜ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ํŒŒ์ด์–ด๋ฒ ์ด์Šค ๋ฌธ์„œ์— ๋‚˜ํƒ€๋‚˜์žˆ๋Š”๋ฐ์š”. ํŠธ๋žœ์žญ์…˜์ด๋ž€ ์šฉ์–ด๋Š” ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋™์•ˆ์— ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜๋ฉด ์ธ์Šคํƒ€๊ทธ๋žจ์˜ ์ข‹์•„์š” ํ•˜ํŠธ๋ชจ์–‘ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ข‹์•„์š” ํ•˜ํŠธ๋ชจ์–‘์„ ๋งŒ์•ฝ ๋™์‹œ์— ์—ฌ๋Ÿฌ์‚ฌ๋žŒ์ด ๋ˆŒ๋ €์„ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์ƒ๋  ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์˜ ์ž…๋ ฅ์„ ๊ธˆ์ง€ํ•˜๊ณ  ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด ๊ทธ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ํ•œ๋ฒˆ ์ข‹์•„์š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด๋ณผ๊นŒ์š”? ๋จผ์ € ํŒŒ์ด์–ด์Šคํ† ์–ด์—์„œ ์ธ์Šคํƒ€๊ทธ๋žจ์ด๋ผ๋Š” ์ฝœ๋ ‰์…˜์— ์ข‹์•„์š”๋ผ๋Š” ๋ฌธ์„œ๋ฅผ ๋งŒ๋“  ๋’ค ํ•„๋“œ๊ฐ’์œผ๋กœ like์™€ ๊ฐฏ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค.. 2020. 5. 15.
[Firebase] Storage์—์„œ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ์ฒซ ๋ฒˆ์งธ๋กœ ํ•  ์ผ์€ podํŒŒ์ผ์— 'Firebase/Storage'๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค ๊ทธ๋ฆฌ๊ณค ํ„ฐ๋ฏธ๋„๋กœ ๊ฐ€์„œ ํ•ด๋‹น ํด๋”๋กœ ์ด๋™ ํ›„ pod install์„ ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณค ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด import FirebaseStorage ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณค Storage์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ UIImage๋ฅผ ๋ฐ›๋Š” ์—…๋กœ๋“œํ•˜๋Š” ๋ฉ”์†Œ๋“œ uploadimage๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. data ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ด๋ฏธ์ง€๋ฅผ jpegData๋กœ ๋ฐ”๊ฟ”์ค€ ๋’ค filepath๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์–ด๋–ค ์ด๋ฆ„์œผ๋กœ ์ €์žฅ ๋ฐ ์ฃผ์†Œ๋ฅผ ๋งŒ๋“ค๊ฑด์ง€ ์ •ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณค contentType์œผ๋กœ "image/png"๋กœ ํ•ด์ค€๋’ค ์•„๊นŒ ๋งŒ๋“ค์–ด๋’€๋˜ storage์ธ์Šคํ„ด์Šค์— reference().child(filePath).putData๋ฅผ ํ•ด์ฃผ์–ด ๋ฐ์ดํ„ฐ๋ฅผ.. 2020. 4. 14.
FCM(Firebase Cloud Messaging) ๊ตฌํ˜„ํ•˜๊ธฐ 1.ํ‚ค์ฒด์ธ ๋“ค์–ด๊ฐ€์„œ ์ธ์ฆ์„œ ๋ฐ›๊ธฐ 2.์• ํ”Œ ๊ฐœ๋ฐœ์ž์—์„œ ํ‚ค์ƒ์„ฑํ•˜๊ธฐ ํ‚ค์˜† ํ”Œ๋Ÿฌ์Šค๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ์ฒ˜์Œ์ธ ๊ฒฝ์šฐ๋Š” create key๋ฅผ ํ•ด์ค€๋‹ค. key name์„ ์ •ํ•ด์ฃผ๊ณ  Apple Push Notification service์— ์ฒดํฌ๋ฅผ ํ•ด์ฃผ๊ณ  ์ปจํ‹ฐ๋‰ด๋ฅผ ๋ˆŒ๋Ÿฌ์ค€๋‹ค ๋ฆฌ์ง€์Šคํ„ฐ๋ฅผ ๋ˆŒ๋Ÿฌ์ค€๋‹ค key ID๋ฅผ ๋”ฐ๋กœ ์ ์–ด๋‘๊ณ  ๋‹ค์šด๋กœ๋“œ๋ฅผ ๋ˆ„๋ฅธ๋‹ค. ๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ๋‹ค์šด๋ฐ›์•„์ง„๋‹ค. ์ข€ ์ด๋”ฐ ์จ์•ผ๋˜๋‹ˆ๊น ์ž˜ ๋ณด๊ด€ํ•ด๋†“๋„๋ก ๋‹ค์‹œ ์• ํ”Œ identifiers๋กœ ๋“ค์–ด๊ฐ€์„œ ์•ฑ์„ ๋ˆ„๋ฅธ๋’ค์— App ID Prefix๋Š” ํŒ€ID๋กœ ์“ฐ์ด๋ฏ€๋กœ ์ด๊ฒƒ ์—ญ์‹œ ๋”ฐ๋กœ ์ ์–ด๋‘๋„๋ก ์ปจํ”ผ๊ฒจ๋ ˆ์ด์…˜์—์„œ Push Notifications๋ฅผ ์ฒดํฌํ•ด์ค€๋‹ค. ์ปจํ”ผ๊ฒจ๋ˆŒ๋ €์„ ๋•Œ๋Š” ๋”ฐ๋กœ ์•ˆํ•ด๋„ ๋จ. 3.Xcode Project podfile์— ์•„๋ž˜ ๋‘๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  pod install์„ ํ•ด์ค€๋‹ค. .. 2020. 1. 22.
Firebase๋ฅผ ์ด์šฉํ•œ User ์ƒ์„ฑ ๋ฐ Firestore์— ์œ ์ €๋ฐ์ดํ„ฐ ์ €์žฅ podfile์— ์œ„์™€ ๊ฐ™์ด ์ถ”๊ฐ€ ํ•ด์ค€ ๋’ค ํ„ฐ๋ฏธ๋„์—์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ํด๋”์— ์ด๋™ํ•œ ๋’ค pod install์„ ํ•ด์ฃผ๊ณ  ๊ทธ๋ฆฌ๊ณ  Appdelegate๋กœ ์ด๋™ํ•œ ๋’ค Firebase๋ฅผ importํ•ด์ค€๋‹ค, ๊ทธ ๋‹ค์Œ ์œ„ ํ•จ์ˆ˜๋กœ ์ด๋™ํ•œ ๋’ค FirebaseApp.configure()์„ ํ•ด์ฃผ๊ณ  ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด์„œ ์œ„ ๋‘๊ฐœ๋ฅผ importํ•ด์ค€ ๋’ค ํšŒ์›๊ฐ€์ž…๋ฒ„ํŠผ ๋ˆ„๋ฅด๋Š” ๊ณณ์— ์œ„์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ ํ•ด์ฃผ๋ฉด ๋! let db = Firestore.firestore()์€ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ด์–ด์Šคํ† ์–ด์—์„œ ๊ฐ€์ ธ์˜จ๋‹จ ์˜๋ฏธ ์œ„์™€ ๊ฐ™์ด ์ €์žฅ๋œ๋‹ค. ๊ฑฐ๊ธฐ์— collection์˜ ์ด๋ฆ„์€ "users"์ด๊ณ  ๊ทธ ์•ˆ์— document์˜ ์ด๋ฆ„์€"๊ฐ€์ž…ํ•˜๋Š” ์ด๋ฉ”์ผ"๋กœ ๊ทธ ์•ˆ์— email,name์ด๋ผ๋Š” ํ•„๋“œ์— ๊ฐ ๊ฐ ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์„ ๋„ฃ์–ด์ค€๋‹ค๋Š” ๋œป 2019. 11. 23.
Firebase๋ฅผ ์ด์šฉํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ์ด๋ฉ”์ผ ๋ณด๋‚ด๊ธฐ FirebaseAuth๋ฅผ import ํ•ด์ค€ ๋’ค ์œ„ ์ฝ”๋“œ withEmail: ์ฐพ์„ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ด๋ฉ”์ผ์„ ์ ์–ด์ฃผ๋ฉด ์œ„ ์ด๋ฉ”์ผ๋กœ ์ด๋Ÿฌํ•œ ๋งํฌ๊ฐ€ ์˜จ๋‹ค. ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žฌ์„ค์ •ํ•˜๋ผ๊ณ  ๋œฌ ๋’ค ์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ ์–ด์ฃผ๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์žฌ์„ค์ •๋œ๋‹ค. 2019. 11. 23.
728x90
๋ฐ˜์‘ํ˜•