初代 SwiftUI 就用來寫 Watch App 吧! - [13 一三](https://twitter.com/ethanhuang13) === {%hackmd FGRWt1UuTFKk0wSbGgg-SA %} > 請從這裡開始 ## YouTube {%youtube 1cROaQ88adE %} ## Slide {%speakerdeck ethanhuang13/chu-dai-swiftui-jiu-yong-lai-xie-watch-app-ba %} ## 講者資訊 - 13 一三 - Twitter: [@ethanhuang13](https://twitter.com/ethanhuang13) - GitHub: [ethanhuang13](https://github.com/ethanhuang13) - 任職於 [CATCHPLAY](https://www.catchplay.com) - 獨立開發者,作品:NoteBox、Blahker、Ladybug、Knil... - weak self podcast https://weakself.dev - «13的開發者週報» https://ethanhuang13.substack.com --- * [投影片](https://speakerdeck.com/ethanhuang13/chu-dai-swiftui-jiu-yong-lai-xie-watch-app-ba) ### 需要先備知識 * 要有Apple Watch使用經驗 * 官方的[SwiftUI tutorial](https://developer.apple.com/tutorials/swiftui/tutorials) WatchOS 末梢開發 tvOS 邊緣開發 watchOS 6 可以獨立開發 獨立上架 獨立的target ### 基本架構 - iOS App Target : Disposable (WatchConnectivity -> X) ### 獨立Watch App - 有個地方要打勾(run without iOS Application) - 有Testflight (on iOS App) - 沒有 IAP 😅 ### Watch App UX - 以秒為記的使用時間體驗 - 能點兩下就不要點三下(甚至不用點) - 按鈕跟資訊不能多 - 獨有控制方式 - Force touch - 觸覺回饋 Haptic feedback - 數位錶冠 Digital Crown - 不用支援dark mode🌚 - 不能用iOS app的做法搬到watch OS - 能不捲就不要捲動 - 可以用Digital Crown來作精準調整 - 用PageNavigation ## 13 WatchApps ### 1. Drinkbobo 紀錄喝了幾杯飲料 *等珍珠奶茶emoji + 待開源中..* ### 2. Defog (世界迷霧的概念) 未完成因為懶得寫iOS App 😅 ### 3. Pineapple Timer 🍍 Insipred by 番茄🍅鐘工作法 Pomodoro - 模擬發條的聲音 - 送審中 - [Testflight](https://testflight.apple.com/join/KUkDxOOg) > 最邪惡的iOS 技巧 (13教的)靜默推播 > Silent Push Push Notification > 啟動AVSpeechSynthesizer(只能講30秒) > 讓User手機隨時可以啟動講話 (X) ### 4. 😈狂鬧鐘 watchOS 6 **Extended Runtime** 規定是要call震動API ## 坑 ### 1. 名字預設 ooo WatchKit App 要記得不是WatchKit Extension了 ### 2. 不能同時兩個模擬器 ### 3. 安裝實機器跑不起來? ### 4. 怎樣同時Preview多個裝置 ### 5. PreviewProvider @Binding .constant(xxxx) ### 6. WKHostingViewController<View> 加environmentObject - type 不一樣 - solution: environment包成View ### 7. Navigation Page 拉法 請參考投影片~ ### 8 不能寫switch case 要寫 if else 無法做單元測試 ###### tags:`iPlayground2019`