๐ŸŒ™

[Swift] iOS WidgetKit์˜ ๊ฐ€๋Šฅ ๋ฒ”์œ„์™€ ํ•œ๊ณ„: ์‹ค์‹œ๊ฐ„์„ฑ, ๋ฐ์ดํ„ฐ ๊ฐฑ์‹  ์ „๋žต

yeggrrr๐Ÿผ 2025. 12. 14. 19:23
728x90

 



iOS ์œ„์ ฏ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๊ณผ ํ•œ๊ณ„, ๊ทธ๋ฆฌ๊ณ  ํ™œ์šฉ ์‚ฌ๋ก€

iOS ์œ„์ ฏ์€ ํ™ˆ ํ™”๋ฉด ๋˜๋Š” ์ž ๊ธˆ ํ™”๋ฉด์—์„œ ์•ฑ์˜ ํ•ต์‹ฌ ์ •๋ณด๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.
WidgetKit์€ iOS 14 ์ดํ›„ ์ง€์†์ ์œผ๋กœ ํ™•์žฅ๋˜์–ด ์™”์ง€๋งŒ, ์—ฌ์ „ํžˆ ๋ช…ํ™•ํ•œ ์ œํ•œ์ด ์กด์žฌํ•˜๋ฉฐ,
์ด ํ•œ๊ณ„๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์œ„์ ฏ ๊ธฐํš·๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.


 


 

์œ„์ ฏ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

1) ์ •์ /๋ฐ˜์ •์  ์ •๋ณด์˜ ์‹œ๊ฐํ™”

์œ„์ ฏ์€ ์•ฑ์˜ ์ผ๋ถ€ ์ •๋ณด๋ฅผ ๊ฐ„๋‹จํ•œ UI๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • D-Day, ์บ˜๋ฆฐ๋” ์ผ์ •, ๊ธฐ๋…์ผ
  • ์šด๋™ ๊ธฐ๋ก ์š”์•ฝ(๊ฑธ์Œ์ˆ˜, ์นผ๋กœ๋ฆฌ ๋“ฑ HealthKit ๊ธฐ๋ฐ˜ ํ†ต๊ณ„)
  • ๋‰ด์Šค ํ—ค๋“œ๋ผ์ธ, ๋‚ ์”จ ์š”์•ฝ, ์ฃผ๊ฐ€ ๋“ฑ ๊ฐ„๋‹จํ•œ ์ˆ˜์น˜ ์ •๋ณด
  • ํ•  ์ผ ๋ชฉ๋ก ์ค‘ ์ผ๋ถ€ ํ•ญ๋ชฉ
  • ์นด์šดํŠธ๋‹ค์šด ๋˜๋Š” ํŠน์ • ๋‚ ์งœ๊นŒ์ง€ ๋‚จ์€ ์‹œ๊ฐ„

์ด๋Ÿฌํ•œ ์ •๋ณด๋Š” ํƒ€์ž„๋ผ์ธ ๊ธฐ๋ฐ˜ ์—…๋ฐ์ดํŠธ(TimelineEntry)๋ฅผ ํ†ตํ•ด ์ผ์ • ์ฃผ๊ธฐ๋กœ ๊ฐฑ์‹ ๋œ๋‹ค.

 

 

2) ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์ž๋™ ์—…๋ฐ์ดํŠธ

WidgetKit์˜ ํƒ€์ž„๋ผ์ธ์€ ๋ฏธ๋ž˜ ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ œ๊ณตํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด D-Day ์œ„์ ฏ์ด๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๋งค์ผ 0์‹œ์— ์ž๋™์œผ๋กœ ๋‚จ์€ ๋‚ ์งœ ์žฌ๊ณ„์‚ฐ
  • ํŠน์ • ์‹œ๊ฐ„๋งˆ๋‹ค ์ฃผ๊ธฐ์ ์œผ๋กœ ํ†ต๊ณ„ ์—…๋ฐ์ดํŠธ
  • ์ด๋ฒคํŠธ๊ฐ€ ๊ฐ€๊นŒ์›Œ์งˆ์ˆ˜๋ก ๋” ์งง์€ ์ฃผ๊ธฐ๋กœ ํ•ญ๋ชฉ์„ ๊ฐฑ์‹ 

๋‹จ, ์ด๋Ÿฌํ•œ ์—…๋ฐ์ดํŠธ๋Š” ์‹œ์Šคํ…œ ์Šค์ผ€์ค„์— ๋”ฐ๋ผ ์ง€์—ฐ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ ˆ๋Œ€์ ์ธ ์ฃผ๊ธฐ ๋ณด์žฅ์€ ์—†๋‹ค.

 

3) ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ(์ œํ•œ์ )

iOS 17 ์ดํ›„ ์œ„์ ฏ์€ '์ƒํ˜ธ์ž‘์šฉ(interactive widget)'์„ ์ง€์›ํ•˜์ง€๋งŒ, ์—ฌ์ „ํžˆ ๋‹ค์Œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•œ๋‹ค.

  • ๋ฒ„ํŠผ ํด๋ฆญ → ์•ฑ ์‹คํ–‰ or App Intent ์‹คํ–‰
  • ๊ฐ„๋‹จํ•œ ํ† ๊ธ€ ๋ณ€๊ฒฝ(์˜ˆ: ์™„๋ฃŒ ์ฒดํฌ, ์žฌ์ƒ/์ผ์‹œ์ •์ง€ ๋“ฑ)
  • Lock Screen์—์„œ๋„ ์ตœ์†Œํ•œ์˜ ์•ก์…˜ ๊ฐ€๋Šฅ

์ฆ‰, ํ„ฐ์น˜ ๊ธฐ๋ฐ˜ UI ์ œ๊ณต์€ ๊ฐ€๋Šฅํ•˜๋˜, ํ„ฐ์น˜ ํ›„ ์ฆ‰์‹œ ์•ฑ ๋กœ์ง ์‹คํ–‰ ๋˜๋Š” ์•ฑ ์ด๋™ ์—†์ด ๊ฐ„๋‹จํ•œ Intent ์ฒ˜๋ฆฌ ์ˆ˜์ค€์œผ๋กœ ์ œํ•œ๋œ๋‹ค.

 

 

4) App Intent·App Group์„ ํ†ตํ•œ ์•ฑ๊ณผ ๋ฐ์ดํ„ฐ ๊ณต์œ 

์œ„์ ฏ์€ ๋…๋ฆฝ ํ”„๋กœ์„ธ์Šค์ด๋ฏ€๋กœ, ์•ฑ๊ณผ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋‹ค.

  • App Group(UserDefaults/ํŒŒ์ผ ๊ณต์œ )
  • App Intent / App Shortcuts
  • Background Refresh

๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•œ๋‹ค.

์ด ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒจํ„ด์„ ์ง€์›ํ•œ๋‹ค.

  • ์•ฑ์—์„œ ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„์ ฏ์— ๋ฐ˜์˜
  • ์œ„์ ฏ์—์„œ ํŠน์ • ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ → App Group์— ๊ธฐ๋ก → ์•ฑ์—์„œ ์ฝ๊ธฐ
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋™๊ธฐํ™” → ์œ„์ ฏ ๊ฐฑ์‹ 

 


 

์œ„์ ฏ์˜ ๊ธฐ์ˆ ์  ํ•œ๊ณ„

 

1) ์™„์ „ํ•œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ๋Š” ๋ถˆ๊ฐ€

์œ„์ ฏ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์‹ค์‹œ๊ฐ„ UI๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์—†๋‹ค.

  • ์œ„์ ฏ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์‹œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ดˆ ๋‹จ์œ„ ์—…๋ฐ์ดํŠธ๋Š” ์‹œ์Šคํ…œ ์ •์ฑ…์ƒ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋นˆ๋ฒˆํ•œ ๊ฐฑ์‹ ์€ ๋ฐฐํ„ฐ๋ฆฌ์™€ ์„ฑ๋Šฅ ์ œํ•œ์œผ๋กœ ์ธํ•ด ๋งˆ์Œ๋Œ€๋กœ ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค.

  • ํƒ€์ด๋จธ ์นด์šดํŠธ๋‹ค์šด(์ดˆ ๋‹จ์œ„) → ๋ถˆ๊ฐ€๋Šฅ
  • ์ฃผ๊ฐ€ ์‹ค์‹œ๊ฐ„ ๋ณ€๋™ ํ‘œ์‹œ → ๋ถˆ๊ฐ€๋Šฅ
  • BLE ์—ฐ๊ฒฐ ์ƒํƒœ ์‹ค์‹œ๊ฐ„ ๊ฐฑ์‹  → ๋ถˆ๊ฐ€๋Šฅ

 

2) ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ œํ•œ

WidgetKit์€ UIView๋‚˜ SwiftUI์˜ ์ผ๋ฐ˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งค์šฐ ์ œํ•œ์ ์ด๋‹ค.

  • ์ •์ง€๋œ ์ด๋ฏธ์ง€ ๊ต์ฒด
  • Lock Screen ์ž‘์€ ๋ณ€ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜(์‹ฌ๋ฏธ์  ๋ ˆ๋ฒจ)
  • SF Symbol์˜ ์ผ๋ถ€ static ๋ณ€ํ™˜

์ฆ‰, ๋ณต์žกํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

3) ํ„ฐ์น˜ ์ธํ„ฐ๋ž™์…˜์˜ ์ œ์•ฝ

๋‹ค์Œ ์š”์†Œ๋“ค์€ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†๋‹ค.

  • ์Šคํฌ๋กค๋˜๋Š” ๋ฆฌ์ŠคํŠธ
  • ํ…์ŠคํŠธ ์ž…๋ ฅ
  • ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ
  • ๋ฉ€ํ‹ฐ ํ„ฐ์น˜ ๊ธฐ๋ฐ˜ ์กฐ์ž‘

์œ„์ ฏ์—์„œ ๊ฐ€๋Šฅํ•œ ์ƒํ˜ธ์ž‘์šฉ์€ Tap / Button ์ •๋„์— ํ•œ์ •๋œ๋‹ค.

 

4) ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์˜ ์ œ์•ฝ

์œ„์ ฏ์€ ์ง์ ‘์ ์œผ๋กœ ์žฆ์€ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.

  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋„คํŠธ์›Œํฌ๋Š” ์‹œ์Šคํ…œ์ด ํŒ๋‹จํ•˜์—ฌ ์ œํ•œ์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค.
  • ์œ„์ ฏ์ด ์ž„์˜ ์‹œ์ ์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€.
  • ์•ฑ ์‹คํ–‰์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜, Push ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด๋‘์–ด์•ผ ํ•จ.

 

5) ์œ„์ ฏ ์ž์ฒด์—์„œ ํ™”๋ฉด ์ „ํ™˜·๋ผ์šฐํŒ… ๋ถˆ๊ฐ€

์œ„์ ฏ์€ ์˜ค์ง ํŠน์ • URL Scheme ๋˜๋Š” ๋”ฅ๋งํฌ๋กœ ์•ฑ์„ ์—ฌ๋Š” ํ–‰๋™๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
์œ„์ ฏ ๋‚ด๋ถ€์—์„œ ํŽ˜์ด์ง€ ์ „ํ™˜, ๋ชจ๋‹ฌ ํ‘œ์‹œ ๋“ฑ์€ ์˜ํ–ฅ ์ค„ ์ˆ˜ ์—†๋‹ค.

 

6) ๋กœ์ปฌ ์ €์žฅ์†Œ ์ ‘๊ทผ ์ œํ•œ

์œ„์ ฏ์€ ์•ฑ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฒƒ:

  • App Group UserDefaults
  • App Group ํŒŒ์ผ ์‹œ์Šคํ…œ


๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ:

  • ์•ฑ์˜ ์ผ๋ฐ˜ UserDefaults
  • CoreData ๊ธฐ๋ณธ ์ €์žฅ์†Œ
  • ํ‚ค์ฒด์ธ
  • HealthKit ์ง์ ‘ ์ ‘๊ทผ(์•ฑ Intent ๊ธฐ๋ฐ˜์œผ๋กœ ์šฐํšŒ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ œํ•œ์ )

 


 

์œ„์ ฏ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ธฐ๋Šฅ(ํ˜„์‹ค์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ)

 

์•„๋ž˜ ๊ธฐ๋Šฅ์€ WidgetKit ๊ตฌ์กฐ์ƒ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค.

  • ์‹ค์‹œ๊ฐ„ ๋™์  UI (ํƒ€์ด๋จธ·์Šคํ†ฑ์›Œ์น˜)
  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ธฐ๋ฐ˜ ๊ธฐ๋Šฅ(ํ…์ŠคํŠธ ์ž…๋ ฅ, ์Šคํฌ๋กค ๋ชฉ๋ก ์ž‘์„ฑ ๋“ฑ)
  • BLE/์„ผ์„œ ์‹ค์‹œ๊ฐ„ ์—ฐ๊ฒฐ ์ƒํƒœ ํ‘œ์‹œ
  • ์นด๋ฉ”๋ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
  • ์ˆ˜์‹œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ํ†ตํ•œ ์ฆ‰์‹œ ๋ฐ˜์˜
  • ์ดˆ ๋‹จ์œ„ ๋˜๋Š” 1๋ถ„ ์ดํ•˜ ๊ฐฑ์‹ ์„ ์š”๊ตฌํ•˜๋Š” ์ฝ˜ํ…์ธ 

์ฆ‰, ์œ„์ ฏ์€ "์•ฑ์˜ ์ถ•์†Œ๋œ ๋ทฐ"๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๋…๋ฆฝ๋œ ์ •์  ํ”„๋ฆฌ๋ทฐ๋ผ๋Š” ์ ์„ ์ „์ œ๋กœ ํ•ด์•ผ ํ•œ๋‹ค.

 

 


์œ„์ ฏ์„ ํ™œ์šฉํ•ด ๋ณดํ†ต ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค

 

1) ๋‚ ์งœ·์ผ์ • ๊ธฐ๋ฐ˜ ๊ธฐ๋Šฅ
  • D-Day, ๊ธฐ๋…์ผ, ์ƒ์ผ
  • ์บ˜๋ฆฐ๋” ์ผ์ • ์š”์•ฝ
  • ๋ฐ˜๋ณต ์ผ์ • ํ™•์ธ

 

2) ๊ฑด๊ฐ•·ํ™œ๋™ ์š”์•ฝ
  • ์˜ค๋Š˜์˜ ๊ฑธ์Œ ์ˆ˜
  • ์šด๋™๋Ÿ‰ ์š”์•ฝ
  • ์ˆ˜๋ฉด ๊ธฐ๋ก ์š”์•ฝ

 

3) ๋‹จ๊ธฐ ์ •๋ณด ์•Œ๋ฆผ
  • ์ตœ๊ทผ ์•Œ๋ฆผ ํ•˜์ด๋ผ์ดํŠธ
  • ๊ณ ์ •๋œ ์ฆ๊ฒจ์ฐพ๊ธฐ ์ •๋ณด(์˜ˆ: ๋‚ ์”จ, ์ฃผ๊ฐ€, TODO ๋ชฉ๋ก ์ผ๋ถ€)
  • ์Œ์•… ์žฌ์ƒ ์ƒํƒœ ๋˜๋Š” ํŒŸ์บ์ŠคํŠธ ์ง„ํ–‰ ์ƒํƒœ(์ œ์–ด ๋ฒ„ํŠผ ํฌํ•จ)

 

4) ๊ฐœ์ธํ™”๋œ ๊ฐ„๋‹จํ•œ ์ •๋ณด ํ‘œ์‹œ
  • ์˜ค๋Š˜์˜ ๋ฌธ๊ตฌ/๋ช…์–ธ
  • ํ•  ์ผ ๊ฐœ์ˆ˜
  • ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์š”์•ฝ(์ƒํ˜ธ์ž‘์šฉ ๋ฒ„ํŠผ ํฌํ•จ)

 

5) ํŠน์ • ์•ฑ ๊ธฐ๋Šฅ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ด๋™
  • ์•ฑ์˜ ํŠน์ • ํ™”๋ฉด ๋”ฅ๋งํฌ ์ด๋™
    (์˜ˆ: ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€ ํ™”๋ฉด, ์บ˜๋ฆฐ๋” ํ™”๋ฉด, ํ†ต๊ณ„ ์ƒ์„ธ ํ™”๋ฉด ๋“ฑ)

์œ„์ ฏ์€ "๋น ๋ฅธ ํ™•์ธ"๊ณผ "๋น ๋ฅธ ์ ‘๊ทผ"์ด๋ผ๋Š” ๋ชฉ์ ์„ ์ถฉ์‹คํžˆ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„๊ตฌ๋กœ ํ™œ์šฉ๋œ๋‹ค.

 



iOS ์œ„์ ฏ์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ์ˆ˜๋‹จ์ด์ง€๋งŒ, ์šด์˜์ฒด์ œ ์ •์ฑ…์— ์˜ํ•ด ๋ช…ํ™•ํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ฐ€์ง„ ๊ตฌ์กฐ๋‹ค.
์œ„์ ฏ์„ ๊ธฐํšํ•  ๋•Œ๋Š” ๋‹ค์Œ ์›์น™์„ ์—ผ๋‘์— ๋‘๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

  1. ์‹ค์‹œ๊ฐ„์„ฑ ์š”๊ตฌ๊ฐ€ ์—†์„ ๊ฒƒ
  2. ๊ฐ„๋‹จํ•œ UI๋กœ ์ถฉ๋ถ„ํžˆ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ •๋ณด์ผ ๊ฒƒ
  3. ์ƒํ˜ธ์ž‘์šฉ์ด ์ œํ•œ์ ์ผ ๊ฒƒ์„ ์ „์ œ๋กœ ํ•  ๊ฒƒ
  4. App Group ๋˜๋Š” App Intent ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์„ค๊ณ„๋ฅผ ํ•  ๊ฒƒ

์ด ์›์น™์— ๋งž๊ฒŒ ๊ตฌ์„ฑ๋œ ์œ„์ ฏ์€ ์•ฑ์˜ ๊ฐ€์น˜๋ฅผ ํ™ˆ ํ™”๋ฉด๊นŒ์ง€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ™•์žฅ์‹œํ‚ค๋ฉฐ, ์‚ฌ์šฉ์ž์—๊ฒŒ ๋†’์€ ํŽธ์˜์„ฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

๊ทธ๋Ÿฐ๋ฐ.. ์—ฌ๊ธฐ์„œ ์˜๋ฌธ์ !

"์—ฌ๋Ÿฌ ๊ฑธ์Œ ์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ํฌ์ธํŠธ๋ฅผ ์ง€๊ธ‰ํ•˜๋Š” ์•ฑ๋“ค์ด ์ด๋ฏธ ๊ฑธ์Œ ์ˆ˜ ์œ„์ ฏ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์‹ค์‹œ๊ฐ„์„ฑ  ์š”๊ตฌ๊ฐ€ ์—†์–ด์•ผํ•œ๋‹ค...?
๋‚ ์”จ ์•ฑ๋„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ˜„์žฌ ๋‚ ์”จ & ์˜จ๋„๋ฅผ ํ‘œ์‹œํ•ด์ฃผ๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ...?"


์ด ์˜๋ฌธ์ ์€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž์™€ ๊ธฐํš์ž๊ฐ€ ์ฒ˜์Œ ์œ„์ ฏ์„ ์ ‘ํ•  ๋•Œ ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ€์ง€๋Š” ์˜คํ•ด์ง€๋งŒ,
์ •ํ™•ํžˆ ๋”ฐ์ ธ๋ณด๋ฉด ์ด๋Š” WidgetKit์ด ์‹ค์‹œ๊ฐ„์„ ์ง€์›ํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ,
๋ฐ์ดํ„ฐ ํŠน์„ฑ๊ณผ OS ๊ตฌ์กฐ์˜ ๊ฒฐํ•ฉ์œผ๋กœ '์‹ค์‹œ๊ฐ„์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ํšจ๊ณผ'๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์— ๋ถˆ๊ณผํ•˜๋‹ค.

๊ฑธ์Œ ์ˆ˜์˜ ๊ฒฝ์šฐ, iOS๊ฐ€ CoreMotion ์„ผ์„œ๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ’์ด ๋ˆ„์ ํ•˜๊ณ 
HealthKit์— ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐ˜์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
์œ„์ ฏ์ด ๊ฐฑ์‹ ๋˜๋Š” ์ˆœ๊ฐ„ HealthKit ๊ฐ’์„ ์ฝ์œผ๋ฉด ์ด๋ฏธ ์ตœ์‹ ๊ฐ’์ด ๋ฐ˜์˜๋œ ์ƒํƒœ์ธ ๊ฒƒ์ด๋‹ค.

๋‚ ์”จ ์œ„์ ฏ ์—ญ์‹œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ WeatherKit ๋˜๋Š” ์ž์ฒด ์„œ๋ฒ„์—์„œ
๋‚ ์”จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ App Group ์ €์žฅ์†Œ์— ๊ธฐ๋กํ•ด๋‘๋ฉฐ,
์œ„์ ฏ์€ ๊ทธ ๊ฐ’์„ ์Šค๋ƒ…์ƒท ํ˜•ํƒœ๋กœ ํ‘œ์‹œํ•  ๋ฟ์ด๋‹ค.

์ฆ‰, ์œ„์ ฏ ์ž์ฒด๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,
์•ฑ ํ˜น์€ ์‹œ์Šคํ…œ์ด ๋ฏธ๋ฆฌ ๊ฐฑ์‹ ํ•œ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ์œ„์ ฏ์ด ์ˆ˜๋™์ ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

์ •๋ฆฌํ•˜์ž๋ฉด,

WidgetKit์€ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ,
HealthKit, WeatherKit์ฒ˜๋Ÿผ OS ๋ ˆ๋ฒจ์—์„œ ์ž์ฃผ ๊ฐฑ์‹ ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์ค€๋น„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
์‹œ์Šคํ…œ์ด ์œ„์ ฏ์„ ์ƒˆ๋กœ ๊ทธ๋ ค์ฃผ๋Š” ์‹œ์ ์—๋Š” '์‹ค์‹œ๊ฐ„์ฒ˜๋Ÿผ ๋ณด์ด๋Š”' UI๊ฐ€ ์™„์„ฑ๋˜๋Š” ๊ฒƒ์ด๋‹ค.


๋”ฐ๋ผ์„œ HealthKit ๊ธฐ๋ฐ˜ ์œ„์ ฏ์„ ์„ค๊ณ„ํ•  ๋•Œ๋Š” ์‹ค์‹œ๊ฐ„์„ฑ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ธฐ๋ณด๋‹ค,
ํƒ€์ž„๋ผ์ธ ๊ตฌ์„ฑ ์ „๋žต, App Group ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๊ตฌ์กฐ, Background Refresh ์•ˆ์ •์„ฑ ํ™•๋ณด์—
์ดˆ์ ์„ ๋งž์ถ”๋Š” ๊ฒƒ์ด ํ˜„์‹ค์ ์ด๊ณ  ์ ์ ˆํ•œ ์ ‘๊ทผ์ผ๊ฑฐ๋‹ค.


๋‹ค์Œ ๊ธ€์—๋Š” HealthKit์„ ํ™œ์šฉํ•ด '์‹ค์‹œ๊ฐ„์ฒ˜๋Ÿผ ๋ณด์ด๋Š”' ๊ฑธ์Œ์ˆ˜ ์œ„์ ฏ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ณผ์ •์„ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.
(์œ„์ ฏ ๊ด€๋ จ ๊ธ€๋งŒ 4๊ฐœ์งธ,,, ์ด์ œ ์ฐ๋ง‰๐Ÿ˜‚)

ํŠนํžˆ ์‚ฌ์šฉ์ž๊ฐ€ ํ™ˆ ํ™”๋ฉด์„ ๊ณ„์† ๋ณด๊ณ ์žˆ์„ ๋•Œ iOS๊ฐ€ ์œ„์ ฏ์˜ ๊ฐฑ์‹  ์šฐ์„ ์ˆœ์œ„๋ฅผ ์–ด๋–ป๊ฒŒ ์กฐ์ •ํ•˜๋Š”์ง€,
๊ทธ๋ฆฌ๊ณ  WidgetKit์ด ์–ด๋–ค ์›๋ฆฌ๋กœ ์Šค๋ƒ…์ƒท์„ ๊ฐฑ์‹ ํ•˜๋Š”์ง€๋ฅผ ์‹คํ—˜์„ ํ†ตํ•ด ๊ฒ€์ฆํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

์œ„์ ฏ์˜ ๊ฐฑ์‹  ์ฃผ๊ธฐ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์ด ์•„๋‹ˆ๋ผ,
๋ฐฐํ„ฐ๋ฆฌ ์ƒํƒœ, ๊ธฐ๊ธฐ ์„ฑ๋Šฅ, ์‚ฌ์šฉ์ž ํ–‰๋™ ํŒจํ„ด ๋“ฑ ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜จ์ „ํžˆ ์‹œ์Šคํ…œ ํŒ๋‹จ์— ๋”ฐ๋ฅธ ํœด๋ฆฌ์Šคํ‹ฑ์ด๋ผ๋Š”..

์ด ๋ถ€๋ถ„์€ ๊ณต์‹ ๋ฌธ์„œ์—๋„ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…๋˜์–ด ์žˆ์ง€ ์•Š์•„์„œ, ์ง์ ‘ ๊ด€์ฐฐํ•ด๋ณด๋Š” ๊ณผ์ •์ด ์˜๋ฏธ์žˆ์–ด ๋ณด์ธ๋‹ค.๐Ÿคจ

 


 

728x90