๐Ÿ’ฌif(kakao) iOS 14 WidgetKit ์นด์นด์˜คํ†ก ์ ์šฉ๊ธฐ๋ฅผ ๋“ฃ๊ณ 

sangheeยท2021๋…„ 8์›” 23์ผ
0

๐Ÿ’ฌ์„ธ๋ฏธ๋‚˜

๋ชฉ๋ก ๋ณด๊ธฐ
1/1
post-thumbnail

iOS 14 WidgetKit ์นด์นด์˜คํ†ก ์ ์šฉ๊ธฐ

iOS 14 WidgetKit ์นด์นด์˜คํ†ก ์ ์šฉ๊ธฐ

WidgetKit

iOS 14๋ถ€ํ„ฐ ๋„์ž…๋˜์—ˆ๋‹ค. ํ™ˆ ํ™”๋ฉด์—์„œ ๋ฐ”๋กœ ์ฑ„ํŒ…๋ฐฉ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

Widget Extension๊ณผ์˜ ์ฐจ์ด์ 

  • Swift UI๋ฅผ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ํ™ˆ ํ™”๋ฉด์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณต์žกํ•œ UI ์ฒ˜๋ฆฌ์— ๋งค์šฐ ์ œํ•œ์ ์ด๋ฉฐ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์œ„์ ฏ ๋ฒˆ๋“ค๋กœ ๋™์ผ ์œ„์ ฏ์„ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

WidgetKit Life Cycle

  • snapshot(): ์œ„์ ฏ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค.
  • timeline(): Entry Array(ํ˜„์žฌ, ๋ฏธ๋ž˜)๋ฅผ ๊ฐ–๋Š”๋‹ค.

Configuration

  • Provider: ์œ„์ ฏ์˜ ๊ฐฑ์‹ ์„ ๋‹ด๋‹นํ•œ๋‹ค. Provider๋ฅผ ํ†ตํ•ด timeline์—์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์œ„์ ฏ์—๊ฒŒ ์ œ๊ณตํ•˜์—ฌ ์œ„์ ฏ์ด ๊ฐฑ์‹ ๋˜๋„๋ก ํ•œ๋‹ค.
  • ViewContent: UI๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.

App Extension

์œ„์ ฏํ‚ท ๋˜ํ•œ ์•ฑ ์ต์Šคํ…์…˜์ด๊ธฐ์— ํ˜ธ์ŠคํŠธ์•ฑ๊ณผ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Shared Container๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

์นด์นด์˜คํ†ก WidgetKit ์‚ฌ์šฉ

๊ธฐ์กด์˜ ์นด์นด์˜คํ†ก๊ณผ ํ†ก ์„œ๋ž์„ ๊ตฌ๋ณ„ํ•ด์„œ ๊ตฌํ˜„ํ•˜์˜€์ง€๋งŒ, ์œ„์ ฏํ‚ท์„ ์ ์šฉํ•ด์„œ ํ•˜๋‚˜์˜ ๋ฒˆ๋“ค์•ˆ์—์„œ ์žฌ๊ณตํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ตฌ์กฐ์ฒด ๋‚ด์— ๋ฒˆ๋“ค๋“ค์„ ๋„ฃ์–ด ๋ฌถ์—ˆ๋‹ค.

import WidgetKit
import SwiftUI

@main
struct KakaoTalkWidgetBundle: WidgetBundle {
    @WidgetBundleBuilder
    var body: some Widget {
        KakaoTalkWidget()
        TalkDriveWidget()
    }
}

WidgetKit ํ•œ๊ณ„

๊ฐฑ์‹  ์ฒ˜๋ฆฌ

  • ์œ„์ ฏ์˜ ๊ฐฑ์‹  ์ฃผ๊ธฐ๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š๋‹ค.
  • ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ๊ฐ€ ํž˜๋“ค ์ˆ˜ ์žˆ๋‹ค.

๊ฐฑ์‹  ์ฒ˜๋ฆฌ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

  • ์œ„์ ฏ์˜ ๊ฐฑ์‹ ์ด ์ด๋ฃจ์–ด์ง€๋Š” ์‹œ์ ์ด ๋ช…ํ™•ํ•œ ๊ฒฝ์šฐ์—๋Š” ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํŠน์ • ์œ„์ ฏ์„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค(reloadTimelines).
  • ๋˜๋Š” ์œ„์ ฏ ๋ฒˆ๋“ค ๋‚ดใ…‡์˜ ๋ชจ๋“  ์œ„์ ฏ์„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค(reloadAllTimelines).

๋น„๋™๊ธฐ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ

  • Provider์—์„œ ์ด๋ฏธ์ง€๊นŒ์ง€ ์ƒ์„ฑํ•œ ์ดํ›„์— Entry์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.
  • ์ „๋ฐ˜์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์ผ์ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

UI ๋””์ž์ธ

  • ๋ฐฐ๊ฒฝ์ƒ‰์ด ๋ถˆํˆฌ๋ช…ํ•˜๋‹ค.
profile
๐Ÿ‘ฉโ€๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€