Slide 1

Slide 1 text

ϩοΫը໘ Widget ΛαΫοͱ࣮૷ͯ͠Έͨ࿩ Aoi Okawa (@aomathwift) 2023/02/21 potatotips #81

Slide 2

Slide 2 text

ϩοΫը໘ Widgetʁ

Slide 3

Slide 3 text

ϩοΫը໘ Widget ͱ͸ ● iOS 16 ͔Β࢖͑ΔϩοΫը໘ ΧελϚΠζػೳͷҰ෦ ● AppleWatch ͷίϯϓϦέʔ γϣϯͷΑ͏ͳ Widget

Slide 4

Slide 4 text

৽͍͠ WidgetFamily accessory Circular accessory Rectangular accessory Inline

Slide 5

Slide 5 text

࣮૷ํ๏ @main struct CookpadMartWidget: Widget { var body: some WidgetConfiguration { StaticConfiguration( kind: "DefaultWidget", provider: Provider() ) { entry in EntryView(entry: entry) } .supportedFamilies([.systemSmall, .accessoryCircular]) // ... } }

Slide 6

Slide 6 text

࣮૷ํ๏ struct EntryView : View { @Environment(\.widgetFamily) var family var entry: Provider.Entry var body: some View { switch family { case .systemSmall: SmallView(entry: entry) case .accessoryCircular: CircularView(entry: entry) // ... @unknown default: Text("default") } } }

Slide 7

Slide 7 text

Cookpad Mart ͷ Widget ػೳ طʹಋೖࡁΈ🎉

Slide 8

Slide 8 text

ϩοΫը໘ Widget ΋ αΫοͱಋೖͰ͖ͦ͏💡

Slide 9

Slide 9 text

● accessoryRectangular ͱ accessoryCircular ͷ 2αΠζΛαϙʔτ ● iOS Ͱͷར༻ͷΈΛ૝ఆ ࣮૷ͯ͠Έͨ

Slide 10

Slide 10 text

ಋೖͯ͠Έͨॴײ

Slide 11

Slide 11 text

● දࣔͰ͖Δ৘ใྔ͕ϗʔϜը ໘ Widget ʹൺ΂ͯগͳ͍ ● ΞϓϦΛىಈ͢Δಈઢͱͯ͠ ͷ׆༻ʹৼΓ੾Δͷ΋༗Γ දࣔίϯςϯπͷ೉͠͞

Slide 12

Slide 12 text

Inline ͸ෆ࠾༻ ● Rectangular Ҏ্ʹڝ૪཰͕ߴ͍ʢ࿮1ͷΈʣ ● ೔෇ͷྡʹઃஔ͞ΕΔͷͰ਺஋৘ใ͕ຒ΋Ε΍͍͢ ϚʔτΞϓϦͰ͸ड͚औΓ༧ఆ೔Λදࣔ ͠Α͏ͱ͕ͨ͠ɺ࣌ࠁͷ্ʹ೔෇͕ೋͭ ฒͿͱ͍͏ݟͨ໨͕ෆࣗવա͗ͯ຅🥲

Slide 13

Slide 13 text

ར༻͞ΕͯΔʁ accessoryRectangular Λઃஔ͍ͯ͠ΔϢʔβʔͷׂ߹ 0.018% accessoryCircular Λઃஔ͍ͯ͠ΔϢʔβʔͷׂ߹ 0.10% (ࢀߟ) systemMedium Λઃஔͯ͠ΔϢʔβʔͷׂ߹ 0.045% (ࢀߟ) systemSmall Λઃஔ͍ͯ͠ΔϢʔβʔͷׂ߹ 0.098%

Slide 14

Slide 14 text

࢖ͬͯ΋Β͏ͷ͕೉͍͠ ● ػೳͷଘࡏࣗମ͕ೝ஌͞Εʹ͍͘ ● ࿮ͷڝ૪཰͕ߴ͗͢Δ ● શ෦ͷαΠζ߹Θͤͯ࠷େͰ̑࿮ ● ݱঢ়࿮ͷ਺͕ଟ͍ํ͕࢖ͬͯ΋Β͑ͯΔ

Slide 15

Slide 15 text

Widget ར༻ͷϩάͷऔΓํ ● WidgetCenter.getCurrentConfigurations ● ઃஔ͞ΕͯΔ WidgetFamily ͕഑ྻͰฦΔ ● ΞϓϦ͕ΞΫςΟϒʹͳΔ౓ʹ࠷৽஋Λૹ৴

Slide 16

Slide 16 text

ࠓޙͷ՝୊ ● ػೳͷଘࡏͷೝ஌Λ্͛Δ ● ίϯςϯπͷϒϥογϡΞοϓ ● LiveActivity ౳΋ಋೖͯ͠ϩοΫը໘Ͱͷଘࡏײ ⬆