本文類型:投稿
作者:cloudsthinker
Focus一次探索watchOS的實踐。再次慨歎下Apple的審核速度,just one day…
Focus - 有些事情需要這份執著
人這一輩子總有一些一定要去做必須要去體驗的東西。
對於這些事物的追求需要這份執念。
Focus幫助我們專注於做最重要的事情,給她一個期限,可能是一兩年,也可能只有幾天或者幾小時,總之一旦決定擁有她,那麼中途就不要背棄她。
人這一輩子不要過得太復雜,專注於現在,執著於每次的努力,當回看過往,必將為自己而驕傲。
Focus App Store:傳送門
Focus長什麼樣
Focus參數
Language: pure Swift3
Support: iOS9+、watchOS3.0+(包含Complication、WatchConnectivity)
Vender: Realm(iOS、watchOS)、DCPathButton、IQKeyboardManagerSwift、SCLAlertView、SnapKit
OpenSource:梳理完畢後開源
為什麼要做這麼個App
Apple發布了新款的Apple Watch Series2,之前一直想涉足watchOS的領域,一看設備更新了就趕緊入手了一款。這麼貴的東東,不開發點東西感覺對不起自己花出去的銀子。於是在認真體驗了一段時間後,進行了以下產品思考:
最後決定先嘗試制作一款GTD類APP,跟其它同質App的區別呢就在於只關注於一件事情的實現引導。提供的Apple Watch端App包含了幾乎所有iOS端的功能,同時結合Complication可以將Focus的精簡信息展現到表盤中。利用Apple Watch的貼近特點,進行一些輕度提醒。(說不定過段時間可能會搞一下那個偷偷錄音的APP ^_^)
Focus讓我了解了什麼
1. Swift3
Swift3更新以來,還沒有將原有的swift2項目進行遷移,正好拿個人項目進行了實踐。
綜合體會就是更加優雅簡潔了,這裡就不展開描述了。推薦幾個不錯的教程,首先是官方文檔,然後有貓神的《Swifter - 100 個 Swift 必備 tips》(買的正版,動態更新為了swift3的版本),還有raywenderlich的swift相關教程也在第一時間更新為了swift3版本(不過略貴,感興趣的可以聯系我,發你們)。
2. watchOS 3.0
初涉watch SDK,現在的感覺是相較iOS SDK各有優劣,不過watch SDK的劣勢多了一些。
幾個小例子:
table這一塊,watchOS的處理會更“簡約”一些,沒有這麼多的數據代理,轉而采用了配置方法的調用,初始化配置更集中了。這裡也是針對watch的使用場景進行了SDK層面的精簡優化。
自帶一個計時性質的文本控件date、timer,一般的場景只需要簡單配置就可以使用了(不過可定制項比較有限,Focus中為了統一,還是改為自己實現一個倒計時)
感覺watchOS中的picker就是一個噩夢。。。,官方是沒有提供watchOS版本的日期選擇器的,所以需要自己用picker進行組裝,裡面好多坑,這塊等開源後感興趣的同學可以參考下。
關於控件封裝,原本搞完了watchOS版本的日期選擇器是打算抽離封裝一下的,但是發現watchOS的控件封裝真的沒有太好的途徑,總不能把一個controller分享出來吧。。。(雖然github上有人這麼搞)
幾個建議:
將iOS與watchOS的公用模塊提取為單獨的framework方便復用。
iOS與watchOS的數據同步通過WatchConnectivity,由於一些技術文章的更新緩慢,其中介紹的appgroup方式其實已經不適用了(被坑了一輪)。
同時建議除了配置自動的同步機制外,添加一個按鈕觸發的同步操作,以方便用戶及時進行同步。例如Focus中當點擊iPhone或者watch主頁面中央的小漏斗時,會彈出同步提示窗口:
關於文本錄入這塊watchOS3已經可以使用presentTextInputController(withSuggestions:allowedInputMode:)了,彈出的輸入模塊可以進行語音錄入,建議選擇以及新更新的Scribble,也建議大家使用。(雖然中文的錄入還是有點難用)
3. Realm
早就聽說了realm的大名,一直想嘗試一下,正好借助這個機會集成了進去。不過得出的結論是,其實就目前的realm而言,個人感覺不太適合用於watch相關的應用。主要原因就是庫文件略大,watch應用四五十兆的應用大小限制,使得每一寸空間都顯得特別珍貴(App Store審核的限制,其實相較Apple Watch的存儲來說集成realm造成的空間占用還是可以接受的)。
說說使用realm的幾點感受:
用起來確實很爽,很容易上手,基本就是在操作對象,用過coredata的同學應該很習慣這種方式。
數據庫版本遷移這塊仔細一點也很容易搞定。
因為要同時集成iOS跟watchOS兩個版本的realm所以不要將他們放在同一個項目文件夾下,分別創建文件夾添加引用。
官方的提供的run script:
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"
需要在iOS和watch extension的Build Phases中都要進行添加調用。(我就是因為沒有在extension中添加調用導致模擬器真機運行正常,上傳App Store卻總是驗證報錯…)
對於添加了realm的watchOS項目建議打開bitcode,也是為了優化watch APP的體積。
4. “新”產品上線
好久沒有完整的操作一遍應用的上線流程了,體會有幾點:
Xcode8.1的自動管理簽名還是挺好用的,尚未發現問題。使用該配置後,記得Build Settings中Code Signing Identity的子選項都要配置為iOS Developer。
發現Certificate中添加了專門用於生成服務器推送證書的功能。(估計早就更新了,之前沒在意)
新的itunes connect功能真的挺好用,相較原來的版本慢慢的幸福感。
慨歎下目前Apple的審核速度,真實快啊,上傳到上架one day。
可利用的資源
watchOS官方資源(包括Human Interface Guidelines、App Programming Guide for watchOS 等)
swift官方資源
Raywenderlich
貓神相關文章(雖然是watchOS 2的,但是很受用)
圖形素材:dribbble(尋找創意)、easyicon(圖標)、MakeAppIcon(iPhone App圖標與watch App圖標生成)
小結
Focus會持續更新,目前主要解決了我自己的一些痛點,希望她也能夠幫助到你。如果有什麼好的建議歡迎留言討論。Watch中的App種類確實很有限,不像iOS的這麼豐富,有好的產品創意也歡迎一起討論。watchOS 3.0的更新讓Apple Watch煥發了新的生機,有了不少新的可能,讓我們一起把我們的Apple Watch豐富起來吧^_^。
最後附上50個促銷代碼,感興趣的同學可以下載使用。
促銷碼傳送門
原文傳送門 :http://alithink.com/2016/11/15/Focus/