watchOS app 開發筆記:Complications

這一篇主要是要紀錄如何設定 Apple Watch 的 Complication。

Complications 是錶面上可讓使用者選擇的小元件,需要使用 ClockKit 開發 (有些畫面可以用 SwiftUI 開發),它的用途是在特定的時間,顯示相對應的資訊。

Apple Watch 內建數十種錶面,每種錶面支援的 complications 數量 / 位置 / 尺寸都不盡相同,根據不同的尺寸跟風格,定義了多種不同的 families,每個 familiy 支援不同的 templates,我們使用 template 來設定要顯示的文字、圖片、或儀表圖。各種不同 families 的長相可以參考這份文件

繼續閱讀 ➜

watchOS app 開發筆記:傳遞資料

這一篇筆記主要是要記錄如何在 iPhone app 跟 watchOS app 之間傳遞資料。

iPhone 跟 Apple Watch 的溝通方式

iPhone app 跟 Watch app 可以透過設定相同的 App Group 共享檔案,也可以透過 WatchConnectivity 溝通,App Group 的方式沒什麼好說的,所以來紀錄 WatchConnectivity 的作法。它主要分為兩種方式:

繼續閱讀 ➜

整合 Unity 到 SwiftUI App

最近剛好有機會要整合 Unity 到 SwiftUI 開發的 app 裡頭,整個過程不算難,但是蠻繁瑣的。網路上的資料絕大部分都是跟 Objective-C / UIKit 的整合,比較少 Swift / SwiftUi 相關資料,所以趁著記憶猶新的時候把它記錄下來,希望可以幫助到其他人以及未來的自己。

從 Unity 2019.4 的版本開始,它提供了 UaaL (Unity as a Library) 功能,可以把 Unity 專案匯出成 framework 讓其他程式使用,開啟了原生平台與 Unity 互動的更多可能性。你可以只用 Unity 開發遊戲或其他精美畫面的部分,剩下的則是使用原生平台(例如 iOS 或 Android)開發。

我使用的開發環境是 Xcode 12.5 + Unity 2020.3.15f2 LTS,預期達成以下目標:

  1. 在 SwiftUI 顯示 Unity 的畫面
  2. iOS 跟 Unity 可以雙向傳遞訊息

先附上 sample code。這篇文章會有大量程式碼,也會假設你對 Xcode 跟 Unity 的操作有基本的認知,廢話不多說,讓我們開始吧!

繼續閱讀 ➜

macOS 的「公用」與「投遞箱」目錄的用途

在每個 macOS 使用者的根目錄底下都有一個「公用 (Public)」目錄,而且這個目錄裡頭還有一個「投遞箱 (Drop Box)」目錄,身為 Mac 使用者這麼多年一直不知道它們的真正用途,直到最近...

最近因應疫情,很多人必須使用自己的電腦在家工作,然而我家只有一台電腦,所以我就幫家人建立一個新的使用者帳號方便工作用。建立好新的使用者帳號之後,該怎麼讓不同帳號之間共享檔案呢?這時候就需要「公用」跟「投遞箱」了:

  • 你要給別人:你放在「公用」目錄裡頭的檔案可以讓其他帳號存取,但是其他人無法修改或刪除檔案。
  • 別人要給你:其他帳號可以把檔案拖移到你的「投遞箱」目錄,但是只有你看得到「投遞箱」的內容,其他帳號看不到。

更詳細的說明可以參考蘋果官方說明文件

讓 Xcode 專案易於版本控制的方法 - 使用 git pre-commit hook

好幾年前我曾經寫過一篇讓 Xcode 專案易於版本控制的方法,它非常的好用,我也在多個專案裡頭使用這樣的配置用了好多年,都沒有出過什麼問題。

直到最近遇到了 SwiftUI 的 Preview 功能。

猜測可能是因為原先的設定是在 Build phase 去執行排序的 script,導致它破壞了 SwiftUI Preview 的一些機制,我想到了幾個解法,像是

  • 不要放在 Build phase,放到 Run phase 去執行。
  • 改用 XcodeGen 之類的工具產生 project file。
  • 使用 git hook 的 pre-commit 來執行排序。
  • 不要用,等真的遇到 merge conflict 了再說 lol

最後我選擇了 pre-commit 的做法。

繼續閱讀 ➜

如何建立不同的 SSH Key 對應到不同的 Github 帳號

情況

我有私人的 GitHub 帳號,為了方便自己跟公司管理起見,我用公司的信箱申請另一個 GitHub 帳號來存取公司的 repo。

問題

同一台電腦的一組 SSH Key 只能綁定到一個 GitHub 帳號,無法用同一組 SSH key 綁定到多組帳號,所以我無法把綁到私人帳號的 SSH Key 再綁到公司帳號。

解法

我要在同一台電腦建立不同的 SSH Key 對應到不同的 GitHub 帳號,並且在執行 git 操作時,系統會自動選擇對應的 SSH key。

繼續閱讀 ➜