WWDC22) Hello Swift Charts
๐ Overview
์๋ฎฌ๋ ์ดํฐ์์ dynamic interface ๋ฅผ ํ ์คํธ ํ ์ค๋น๊ฐ ๋๋ฉด, notification interface ๋ฅผ ์คํํ๊ธฐ ์ํ custom build scheme ๋ฅผ ์์ฑํฉ๋๋ค. scheme ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด์ test data ๊ฐ ํฌํจ๋ JSON ๋ฐ์ดํฐ ํ์ผ์ ์ง์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์ PushNotificationPayload.apns ํ์ผ์ ์ ์ ํ๊ฒ ์์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.. ์ฌ๊ธฐ์๋ remote notification ์ ์๋ฎฌ๋ ์ด์ ํ๊ธฐ ์ํด ํ์ํ ํค๊ฐ ๋ค์ด์์ต๋๋ค. ๐ Add a Scheme
notification ์ ์ฑ์ ์ถ๊ฐํ ๋ ํ ์คํธํ scheme ๋ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์ฌ๋ฌ๊ฐ์ง category ์ notification ์ ํ ์คํธํ๊ธฐ ์ํด์๋ ๊ฐ category ์ ๋ํ scheme ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
1
Edit Sheme > Run ์์ Watch Interface ๋ฅผ Dynamic Notification ์ผ๋ก ์ค์ ํ๊ณ , Notification Playload ๋ฅผ ์ค์ ํด์ค๋๋ค.
2
notification scheme ๋ฅผ ์คํํ๋ฉด ํด๋น payload ๊ฐ ์์น๋ก ์ ์ก๋ฉ๋๋ค. ๋ํ, payload ํ์ผ์ ์์ดํฐ, ์ ํ ์์น ์๋ฎฌ๋ ์ดํฐ๋ก ๋์ด๋์์ notification ์ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ์๋ Simulator Target Bundle ์ target ์ bundle ID ๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ๋ํ, ํด๋น ๊ธฐ๊ธฐ๊ฐ ์๋ฆผ์ ์์ ํ ์ ์๋ ๊ถํ์ด ์ด๋ฏธ ์์ฒญ๋์ด ์์ด์ผ ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ฆ์ ์ ๋ฌ๋๋ ๊ฒ์ ์๋๋๋ค. ์ต๋ 1๋ถ์ด ์ง์ฐ๋ ์ ์์ต๋๋ค.
To add a new payload file:
3
์ด๋ฅผ ํตํด ํ๋ก์ ํธ์ ์ฌ๋ฌ payload ํ์ผ์ ํฌํจํ๊ณ , build scheme ๋ฅผ ๋ณ๊ฒฝํ๋ฉด์ ํ ์คํธ๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค.
๐ Edit the JSON Payload
payload ํ์ผ์ ์์ ํด์ ์ค์ ์ ์ผ๋ก ์ฑ์ ์ ๋ฌ๋๋ notification content ์ ์ผ์น์ํฌ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Apple Developer - Generating a remote notification ์ ์ฐธ์กฐํ๋ฉด ๋ฉ๋๋ค.
payload ํ์ผ์๋ WatchKit Simulator Actions key ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด ํค๋ ์ผ๋ฐ notificationโs payload ์ ์ผ๋ถ๊ฐ ์๋๋๋ค. ๊ฐ action button ์ ๋ํ๋ ๋๋ค.
๋ค์์ ํค๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
title (Required) action button ์ ์ ๋ชฉ์ ๋๋ค. identifier (Required) ์ฌ์ฉ์๊ฐ ์ ํํ action ์ ์๋ณํ๋ ๋ฌธ์์ด์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํญํ๋ฉด, ์์คํ ์ notification center delegate ์ userNotificationCenter(_:didReceive:withCompletionHandler:) ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. ์์คํ ์ ์ด ํค์ ๊ฐ์ ์ด ๋ฉ์๋์ ์ ๋ฌ๋ UNNotificationResponse ๊ฐ์ฒด์ actionIdentifier ํ๋กํผํฐ ์ ํ ๋นํฉ๋๋ค. behavior (Optional) ์ด ํค์ ์ ์ผํ ๊ฐ์ ๋ฌธ์์ด textInput ์ ๋๋ค. ๋ง์ฝ ์ด ํค๊ฐ ์๋ค๋ฉด, resulting button ์ด text input ์ ํธ๋ฆฌ๊ฑฐ ํฉ๋๋ค. destructive (Optional) ๊ฐ 1 ๋๋ 0, ์ฌ๊ธฐ์ 1์ resulting button ์ด destructive action ์ ์ํํ๋ ๊ฒ์ ๋ํ๋ด๋ ๋ฐฉ์์ผ๋ก ๋ ๋๋ง ๋ฉ๋๋ค. ๊ฐ์ด 0์ด๋ฉด ์ ์์ ์ผ๋ก ๋ ๋๋ง๋ฉ๋๋ค. background (Optional) ๊ฐ 1 ๋๋ 0, ์ฌ๊ธฐ์ 1์ ๋ฒํผ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฑ์ ์คํํ๋๋ก ํฉ๋๋ค. ๐ Send Test Notifications to the Watch
์์คํ ์ด ์ ํ ์์น์ notification ์ ์ ๋ฌํ ์ง ์ฌ๋ถ๋ฅผ ์๋์ผ๋ก ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์(์ ํ์์น๋ฅผ ์ฐฉ์ฉํ๊ฒ ๋๋ฉด ์๋์ผ๋ก ์ ๋ฌ๋๋ค.) ๊ธฐ๊ธฐ์์ ํ ์คํธํ ๋ ์์คํ ์ด ์์๋๋ก notification ์ ์ ํ์์น๋ก ๋ผ์ฐํ ํ๋๋ก ๊ธฐ๊ธฐ์ ์ํ๋ฅผ ์ค์ ํด์ผ ํ ์ ์์ต๋๋ค.
๊ธฐ๊ธฐ๋ฅผ ์๋ชฉ์ ์ฐฉ์ฉํ์ง ์์ ์ํ์์ notification interfaces ๋ฅผ ํ ์คํธํ๋ ค๋ฉด ๋ค์์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
์ ํ ์์น์์ ์๋ชฉ ๊ฐ์ง๋ฅผ ๋นํ์ฑํ ํฉ๋๋ค. companion iPhone ์ watch ์ฑ ๋๋ watch ์ Setting ์์ ์ค์ ํ ์ ์์ต๋๋ค. ์ต์ ์ Passcode > Wrist Detection ์ ์์ต๋๋ค. ์ ํ ์์น๊ฐ ์ถฉ์ ๊ธฐ์ ์ฐ๊ฒฐ๋์ด ์์ง ์์์ง ํ์ธํฉ๋๋ค. iPhone ์ ์ ๊ทธ์ธ์. ๐ซ ํ ์คํธ๋ฅผ ํด๋ด ์๋ค!
watch ์์ ๋น๋ํ๊ฒ ๋๋ฉด ์๋ฆผ ๊ถํ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฒญํฉ๋๋ค.
๋ฐ๋ก ์๋ฆผ์ด ์ค๊ฒ ๋ฉ๋๋ค.
์ง
โ Simulator Target Bundle
์ถ๊ฐ์ ์ผ๋ก, ๋น๋ํ ๋ ๋ง๋ค ๋ง๊ณ , ์์ ์ดํด๋ณธ ๊ฒ์ฒ๋ผ apns ํ์ผ์ ๊ธฐ๊ธฐ์ ๋์ด ๋์์ ๋ฐ์๋ณด๊ฒ ์ต๋๋ค.
์ด๋, ๊ทธ๋ฅ ์ง์ด๋ฃ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋์ต๋๋ค.
7
ํด๋น target ์ bundle identifier ๋ฅผ apns ํ์ผ์ Simulator Target Bundle key ๋ก ์ถ๊ฐํด์ฃผ๋ฉด ๋ฉ๋๋ค.