๊ฐœ๋ฐฅ์คฌ์–ด?

Stack: Firebase, MVC, UIKit, iOS Team: ํŒ€ ํ”„๋กœ์ ํŠธ Role: ๊ฐœ๋ฐœ ์ง„ํ–‰ ๊ธฐ๊ฐ„: 2021/09/23 โ†’ 2021/09/24 About: ์šฐ๋ฆฌ์ง‘ ๊ฐ•์•„์ง€ ์ƒ์กด๊ถŒ์„ ํ™•๋ฆฝํ•˜๋Š” ์‹์‚ฌ ์—ฌ๋ถ€ ํ™•์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

๊ฐœ์š”

GitHub - wansook0316/bookathon_G: ๊ฐœ๋ฐฅ์คฌ์–ด?

๊ธฐํš์˜๋„

  • ๊ฐœ๋ฐฅ์คฌ์–ด? ๋ชจ๋‘๊ฐ€ ๋ฐ”์œ ์š”์ฆ˜ ์šฐ๋ฆฌ์ง‘ ๊ฐ•์•„์ง€ ๋ฐฅ์€ ๋ˆ„๊ฐ€ ์ฑ™๊ฒจ?!
  • ์ด์ œ ํŽธํ•˜๊ฒŒ ์•ฑ์œผ๋กœ ํ™•์ธํ•˜์„ธ์š”

โœย ํ•œ์ค„์†Œ๊ฐœ

  • ์šฐ๋ฆฌ์ง‘ ๊ฐ•์•„์ง€ ์ƒ์กด๊ถŒ์„ ํ™•๋ฆฝํ•˜๋Š” ์‹์‚ฌ ์—ฌ๋ถ€ ํ™•์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

๐Ÿ’ปย ์„œ๋น„์Šค

  • ๊ฐ€์กฑ ๊ตฌ์„ฑ์›์ด ๊ฐ•์•„์ง€ ๋ฐฅ์„ ์ฃผ์—ˆ๋Š”์ง€ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ˆ„๊ฐ€?
    • ๋ฌด์—‡์„?
  • ๊ฐ€์กฑ ๊ตฌ์„ฑ์›๊ฐ„์˜ ์ฑ„ํŒ…๊ธฐ๋Šฅ ์ถ”๊ฐ€๋กœ ๊ฐ„๋‹จํ•œ ์ •๋ณด๋„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋™์ž‘ ํ™”๋ฉด

  1. ๊ฐ€์กฑ ๋งŒ๋“ค๊ธฐ
    1. ์‚ฌ์šฉ์ž ๋“ฑ๋กํ•˜๊ธฐ
      • ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์‚ฌ์šฉ์ž ์—ญํ• ์„ ์š”์ฒญํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์—ญํ• ์€ CollectionView๋ฅผ ๋„์›Œ์„œ 6๊ฐ€์ง€ ์ด๋ชจ์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    2. ๊ฐ•์•„์ง€ ๋“ฑ๋กํ•˜๊ธฐ
      • ๊ฐ•์•„์ง€ ์‚ฌ์ง„๊ณผ ๊ฐ•์•„์ง€ ์ด๋ฆ„์„ ์š”์ฒญํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ•์•„์ง€ ์‚ฌ์ง„ ๊ฐ™์€ ๊ฒฝ์šฐ์—” picker์—์„œ ์„ ํƒํ•˜๊ฒŒ ๋˜๋ฉด FirebaseStorage์— ์ €์žฅํ•˜๊ณ  URL์„ ์š”์ฒญํ•ด์„œ FireStore์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐฉ ์ฐธ๊ฐ€ํ•˜๊ธฐ
    • ๊ฐ€์กฑ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด ์ด๋ฏธ ๋“ฑ๋ก๋œ ๊ฐ€์กฑ์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  3. ์ž๋™๋กœ๊ทธ์ธ
    • ์ด๋ฏธ ๋กœ๊ทธ์ธํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด? ์ž๋™๋กœ๊ทธ์ธ์„ ํ•˜๋Š”๊ฒŒ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ๋” ์ข‹๊ฒŸ์ฃ ?
    • UserDefault๋ผ๋Š” ์ด๋ฏธ iOS์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ „์—ญ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  4. ๋ฐฅ ์ฃผ๊ธฐ
    • ๋ฐฅ์€ CollectionView ์— ์žˆ๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์‚ฌ์šฉ์ž ์—ญํ• ์ฒ˜๋Ÿผ 6๊ฐ€์ง€ ์ด๋ชจ์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๊ธฐ๋ณธ์ ์œผ๋กœ 4๊ฐœ์˜ ๋ฐฅ๋งŒ ์‹œ๊ฐ„๊ณผ ์ด๋ชจ์ง€๋งŒ ๋ณด์ด๊ฒŒ ํ•ด๋‘์—ˆ๊ณ , ์ž์„ธํ•œ ์ •๋ณด ํ˜น์€ ์ถ”๊ฐ€ ์ •๋ณด๋Š” ๋”๋ณด๊ธฐ ์ฐฝ์„ ๋ˆŒ๋Ÿฌ์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ๋”๋ณด๊ธฐ
    • ๋”๋ณด๊ธฐ์—์„œ๋Š” TableView๋ฅผ ์ด์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ด๋ชจ์ง€ / ์ค€ ๋จน์ด ํ…์ŠคํŠธ ์ •๋ณด / ์‹œ๊ฐ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ์ฑ„ํŒ…ํ•˜๊ธฐ
    • ์ฑ„ํŒ…์€ ChatViewController์— Firestore ์Šค๋ƒ…์ƒท์„ ๋‹ฌ์•„ ์ฑ„ํŒ…๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ  ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ฑ„ํŒ… ๋ฐ์ดํ„ฐ ์กฐํšŒ, ์ถ”๊ฐ€ ํ•˜๋ฉด ์Šค๋ƒ…์ƒท์ด ์—…๋ฐ์ดํŠธ๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ›์•„์™€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งก์€ ์—ญํ• 

  • ๋ฉ”์ธํ™”๋ฉด์— ์ง„์ž…ํ•˜๊ธฐ ์ „, ๊ฐ€์กฑ, ๊ฐ•์•„์ง€, ์‚ฌ์šฉ์ž ๋“ฑ๋ก์„ ํ•˜๋Š” ์ง„์ž… ๋ถ€๋ถ„ ๋‹ด๋‹น
  • TextField๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜์ •์„ ๊ฐ์ง€ํ•˜์—ฌ ๋‹ค์Œ ๋ฒ„ํŠผ์˜ enable ์—ฌ๋ถ€ ์ ๊ฒ€
  • ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐ€์กฑ์ด๋ฆ„ ์ธ ๊ฒฝ์šฐ ๊ฐ€์กฑ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๊ณ  Alert๋ฅผ ๋ณด์—ฌ์คŒ
  • Image Picker๋กœ ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜จ ์‚ฌ์ง„์„ Firebase Storage์— ์—…๋กœ๋“œ ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— url๋กœ ์ €์žฅํ•˜์—ฌ ๋””๋ฐ”์ด์Šค ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
  • Custom View Controller๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ํ™”๋ฉด์„ ํด๋ฆญํ–ˆ์„ ๋•Œ, ์ด๋ฏธ ์ œ์ž‘๋œ ์‚ฌ์šฉ์ž ์–ผ๊ตด์„ ํด๋ฆญํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •

๋ฌธ์ œ ์ƒํ™ฉ๊ณผ ํ•ด๊ฒฐ

  • ํ˜‘์—… ๊ณผ์ •์—์„œ ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ๊ฒช์–ด, ํŒ€์› ๋ณ„๋กœ ๋‹ค๋ฅธ ํ™”๋ฉด์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์—…์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ๊ฐ์ด ํด๋”๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์Šคํ† ๋ฆฌ๋ณด๋“œ, swift ํŒŒ์ผ๋“ฑ์„ ๋งŒ๋“ค์–ด์„œ ์ž‘์—…ํ•œ ๋’ค ์—ฐ๊ฒฐํ•  ๋•Œ๋งŒ ํ•ด๋‹น ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์ƒ์„ฑํ•˜์—ฌ ์—ฐ๊ฒฐํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
  • Firebase ์—ฐ๋™์ด ์ฒ˜์Œ์ด๋ผ ๋งŽ์ด ํ—ค๋งธ์ง€๋งŒ ์‚ฌ์šฉ๋ฒ•์„ ์ตํž ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.