Home 寫程式從零開始寫 WatchOS

從零開始寫 WatchOS

by 艾普利
Photo by Raagesh C on Unsplash

Photo by Raagesh C on Unsplash

此篇主要是我看 Apple SwiftUI Tutorials 中的 Creating a watchOS App 學習 watchOS 時,因為使用 Xcode 14撰寫有些不同的地方,就想記錄下來,在 Xcode 14 之後建立 watchOS 已經不會出現Extension Folder 了,主因是現在可以建立獨立的watchOS ,不過目前多數 watchOS App 還是屬於輔助 iOS App 的角色

本篇使用 Xcode 14.2 & SwiftUI


Creating a watchOS App 中下載專用的Project,解壓縮之後可以看到有 “Complete” & “StartingPoint” Folders,Complete 是已經完成的App,即然是要學習寫 watchOS 當然是開啟 StartingPoint 中的專案,開啟專案之後,會發現這個專案其實是延續先前的教學,若你有SwiftUI Tutorials第一章開始練習的話,應該不陌生。


建立 Target

教學的第一步就是建立 Target ,在開啟 add Target 之後就發現畫面不一樣了,若沒有下載任何watchOS Simulator 的話,Xcode 會提配你要下載,下載Simulator 大概要3G記得確認一下容量。

切到watchOS 的頁籤還是可以看到 App Intents Extension,實際上選它建立出來的就和先前的有87%像,不過少了watchApp這個Target,感覺上怪怪的? 後來看了WWDC的Video 才發現應該要選擇 Application 中的App

按下 Next 之後會發現有幾個選項

  • Watch-only App,是建立獨立App 用的
  • Watch App with New Companion iOS App,選這個會再幫你建立一個 iOS App
  • Watch App for Existing iOS App,在已存在的App 中建立Watch App

前二個選項應該是給建立新專案時選的,當你直接建立 WatchOS project 的時候,前二個選項使用起來比較合理,若在已經存在的專案加入WatchOS target 前二個選項反而比較不太適用,總之以這個教學App來說就是要選用第三個選項來建立Watch App

再來就照著教學指示,輸入名字再按下Next 後 Activate Watch scheme 就可以了。

Supports Running Without iOS App Installation 這個選項可以在Watch App 的 Target 裡找到

共享資料

教學一開始就要求你把Watch 裡的 Assets 刪除,我試過之後發現刪除之後Build 會告知找不到 Watch App Icon,幾次嘗試之後,我決定不把 Watch 的 Assets,直接把icon 圖放上去,在 Xcode 更新之後 App icon 可以只給 1024*1024 的圖,其他尺寸的icon 全都由Xcode 自動處理,說真的這功能很棒且早就應該要這麼做了啊!! icon尺寸真的很多…遇到設計師不是很用心,想請對方出圖的時候就很痛苦,追圖也很痛苦……

另一個就是 LandmarksApp.swift 這個檔案可以不用與Watch App 共享,因為Watch App 有自己的入口點了,若命名是照教學取名的話,就是WatchLandmarksApp.swift 這個檔案。記得將原本寫在 LandmarksApp.swift 裡的內容也Copy 到WatchLandmarksApp.swift,主要是這個Watch App 所用的資料並沒有需要從 iOS App 這裡取得,直接Copy 寫法就可以了。

剩下的就可以依照教學選取需要共享的檔案,並在Target Membership 把 WatchLandmarks Watch App 這個打勾

建立Detail View & 加上 List

這二段照著教學做就可以了,基本上沒有什麼需要特別留意的地方,只要記得是直接新增檔案在 Watch App

建立 Custom Notification Interface

先前建立 Watch Extension 的時候會自動建立 NotificationView & NotificationController ,但後來就不會自動建立了,所以若是要建立 Custom Notification Interface 的話,上面二個檔案需要自行建立,所以就先到 New -> File 建立這二個檔案之後再照著教學做吧~

當想要Run 起來試試的時候,發現不能測試,這時候需要新增一個 Scheme,並把Watch Interface 選為 Dynamic Notification,需要用這個 Scheme 去Run 才可以試 Notification

另外還要記得 Payload 要加上 Simulator Target Bundle 這個 Key,就樣就可以像iPhone 一樣,直接將Payload 文件拖拉到Simulator 上測試啦~


一開始有說到下載的檔案裡有Complete 的 Folder ,若真的不知道要怎麼寫的話,可以從這裡去對照看,我自己是覺得看教學還是要自己親自去打過一遍會比較有印象。

這個教學並沒有教到要如何和 iOS App 做資料傳遞,只是建立簡單的 Watch App,若想要和iOS App 進行資料傳遞是要使用到 Watch Connectivity 這個 Framework,它提供了雙向溝通的方式,之後有機會再寫一篇來實作這個。

最後祝大家 Coding 愉快!!

You may also like