Apple Watch App 開發除錯心得

前陣子在幫水滴發票加入 Apple Watch 的功能,這篇文章會紀錄下開發的一些想法。

資料傳遞方面

因為 Watch app 本身可以為一個獨立的 app,所以 UserDefaults 的部分則會擁有自己的一份,也就是說兩者之間無法像是 Widget 一般透過同一個 Group 的 UserDefault 來同步資料。

解決方法

利用 WCSession 來做傳遞資料。

實機測試時,WCSession.isReachable 始終為 false

主要就是手機和手錶之間一直無法透過 WCSession 連接上彼此,會造成幾個問題如

  • Apple Watch App 一直卡在安裝中,無法順利安裝
  • 無法透過 WCSession 從 iOS app 傳遞資料過去給 Watch app

解決方法

我遇到這情況是都選擇重開 iPhone 來處理。

Apple Watch 模擬器和實機上的測試結果不同

在這次的開發之中,我們有使用到比較大的數字在中間傳遞,而原先沒多考慮就以 Int 來存 Timestamp,並在 Apple Watch 的模擬器上測試過幾輪沒出現問題;直到發佈 TestFlight 後才陸續出現在實體裝置上。
進而才意會到模擬器上的 Int 是 64 bit(Int.max = 9223372036854775807),而實際上以 Apple Watch SE6 來說,是 32 bit(Int.max = 2147483647),所以根本不能這樣存。

解決方法

重新審視一次當初自己疏忽掉的 size 問題,並寫篇筆記提醒自己以後開發 Apple Watch app 的時候要注意 CPU 上的差異。

發表迴響