Focus一次探索watchOS的實(shí)踐尸曼。再次慨嘆下Apple的審核速度控轿,just one day...
Focus - 有些事情需要這份執(zhí)著
人這一輩子總有一些一定要去做必須要去體驗(yàn)的東西。
對(duì)于這些事物的追求需要這份執(zhí)念鹦蠕。
Focus幫助我們專注于做最重要的事情钟病,給她一個(gè)期限,可能是一兩年票唆,也可能只有幾天或者幾小時(shí)屹徘,總之一旦決定擁有她噪伊,那么中途就不要背棄她。
人這一輩子不要過(guò)得太復(fù)雜啦吧,專注于現(xiàn)在授滓,執(zhí)著于每次的努力肆糕,當(dāng)回看過(guò)往诚啃,必將為自己而驕傲。
Focus App Store:傳送門(mén)
Focus長(zhǎng)什么樣
Focus參數(shù)
- Language: pure Swift3
- Support: iOS9+、watchOS3.0+(包含Complication造垛、WatchConnectivity)
- Vender: Realm(iOS五辽、watchOS)、DCPathButton杆逗、IQKeyboardManagerSwift罪郊、SCLAlertView、SnapKit
- OpenSource:梳理完畢后開(kāi)源
為什么要做這么個(gè)App
Apple發(fā)布了新款的Apple Watch Series2波势,之前一直想涉足watchOS的領(lǐng)域橄维,一看設(shè)備更新了就趕緊入手了一款争舞。這么貴的東東,不開(kāi)發(fā)點(diǎn)東西感覺(jué)對(duì)不起自己花出去的銀子店溢。于是在認(rèn)真體驗(yàn)了一段時(shí)間后床牧,進(jìn)行了以下產(chǎn)品思考:
最后決定先嘗試制作一款GTD類APP戈咳,跟其它同質(zhì)App的區(qū)別呢就在于只關(guān)注于一件事情的實(shí)現(xiàn)引導(dǎo)著蛙。提供的Apple Watch端App包含了幾乎所有iOS端的功能耳贬,同時(shí)結(jié)合Complication可以將Focus的精簡(jiǎn)信息展現(xiàn)到表盤(pán)中。利用Apple Watch的貼近特點(diǎn)咒劲,進(jìn)行一些輕度提醒顷蟆。(說(shuō)不定過(guò)段時(shí)間可能會(huì)搞一下那個(gè)偷偷錄音的APP _)
Focus讓我了解了什么
1. Swift3
Swift3更新以來(lái),還沒(méi)有將原有的swift2項(xiàng)目進(jìn)行遷移腐魂,正好拿個(gè)人項(xiàng)目進(jìn)行了實(shí)踐慕的。
綜合體會(huì)就是更加優(yōu)雅簡(jiǎn)潔了,這里就不展開(kāi)描述了挤渔。推薦幾個(gè)不錯(cuò)的教程肮街,首先是官方文檔,然后有貓神的《Swifter - 100 個(gè) Swift 必備 tips》(買(mǎi)的正版判导,動(dòng)態(tài)更新為了swift3的版本),還有raywenderlich的swift相關(guān)教程也在第一時(shí)間更新為了swift3版本嫉父。
2. watchOS 3.0
初涉watch SDK眼刃,現(xiàn)在的感覺(jué)是相較iOS SDK各有優(yōu)劣绕辖,不過(guò)watch SDK的劣勢(shì)多了一些。
幾個(gè)小例子:
- table這一塊擂红,watchOS的處理會(huì)更“簡(jiǎn)約”一些仪际,沒(méi)有這么多的數(shù)據(jù)代理,轉(zhuǎn)而采用了配置方法的調(diào)用,初始化配置更集中了树碱。這里也是針對(duì)watch的使用場(chǎng)景進(jìn)行了SDK層面的精簡(jiǎn)優(yōu)化肯适。
- 自帶一個(gè)計(jì)時(shí)性質(zhì)的文本控件date、timer成榜,一般的場(chǎng)景只需要簡(jiǎn)單配置就可以使用了(不過(guò)可定制項(xiàng)比較有限框舔,F(xiàn)ocus中為了統(tǒng)一,還是改為自己實(shí)現(xiàn)一個(gè)倒計(jì)時(shí))
- 感覺(jué)watchOS中的picker就是一個(gè)噩夢(mèng)赎婚。刘绣。。挣输,官方是沒(méi)有提供watchOS版本的日期選擇器的纬凤,所以需要自己用picker進(jìn)行組裝,里面好多坑撩嚼,這塊等開(kāi)源后感興趣的同學(xué)可以參考下移斩。
- 關(guān)于控件封裝,原本搞完了watchOS版本的日期選擇器是打算抽離封裝一下的绢馍,但是發(fā)現(xiàn)watchOS的控件封裝真的沒(méi)有太好的途徑向瓷,總不能把一個(gè)controller分享出來(lái)吧。舰涌。猖任。(雖然github上有人這么搞)
幾個(gè)建議:
將iOS與watchOS的公用模塊提取為單獨(dú)的framework方便復(fù)用。
-
iOS與watchOS的數(shù)據(jù)同步通過(guò)WatchConnectivity瓷耙,由于一些技術(shù)文章的更新緩慢朱躺,其中介紹的appgroup方式其實(shí)已經(jīng)不適用了(被坑了一輪)。
同時(shí)建議除了配置自動(dòng)的同步機(jī)制外搁痛,添加一個(gè)按鈕觸發(fā)的同步操作长搀,以方便用戶及時(shí)進(jìn)行同步。例如Focus中當(dāng)點(diǎn)擊iPhone或者watch主頁(yè)面中央的小漏斗時(shí)鸡典,會(huì)彈出同步提示窗口:
sync.PNG 關(guān)于文本錄入這塊watchOS3已經(jīng)可以使用presentTextInputController(withSuggestions:allowedInputMode:)了源请,彈出的輸入模塊可以進(jìn)行語(yǔ)音錄入,建議選擇以及新更新的Scribble彻况,也建議大家使用谁尸。(雖然中文的錄入還是有點(diǎn)難用)
3. Realm
早就聽(tīng)說(shuō)了realm的大名,一直想嘗試一下纽甘,正好借助這個(gè)機(jī)會(huì)集成了進(jìn)去良蛮。不過(guò)得出的結(jié)論是,其實(shí)就目前的realm而言悍赢,個(gè)人感覺(jué)不太適合用于watch相關(guān)的應(yīng)用决瞳。主要原因就是庫(kù)文件略大货徙,watch應(yīng)用四五十兆的應(yīng)用大小限制,使得每一寸空間都顯得特別珍貴(App Store審核的限制皮胡,其實(shí)相較Apple Watch的存儲(chǔ)來(lái)說(shuō)集成realm造成的空間占用還是可以接受的)痴颊。
說(shuō)說(shuō)使用realm的幾點(diǎn)感受:
用起來(lái)確實(shí)很爽,很容易上手胸囱,基本就是在操作對(duì)象祷舀,用過(guò)coredata的同學(xué)應(yīng)該很習(xí)慣這種方式瀑梗。
數(shù)據(jù)庫(kù)版本遷移這塊仔細(xì)一點(diǎn)也很容易搞定烹笔。
因?yàn)橐瑫r(shí)集成iOS跟watchOS兩個(gè)版本的realm所以不要將他們放在同一個(gè)項(xiàng)目文件夾下,分別創(chuàng)建文件夾添加引用抛丽。
-
官方的提供的run script:
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"
需要在iOS和watch extension的Build Phases中都要進(jìn)行添加調(diào)用谤职。(我就是因?yàn)闆](méi)有在extension中添加調(diào)用導(dǎo)致模擬器真機(jī)運(yùn)行正常,上傳App Store卻總是驗(yàn)證報(bào)錯(cuò)...)
對(duì)于添加了realm的watchOS項(xiàng)目建議打開(kāi)bitcode亿鲜,也是為了優(yōu)化watch APP的體積允蜈。
4. “新”產(chǎn)品上線
好久沒(méi)有完整的操作一遍應(yīng)用的上線流程了,體會(huì)有幾點(diǎn):
- Xcode8.1的自動(dòng)管理簽名還是挺好用的蒿柳,尚未發(fā)現(xiàn)問(wèn)題饶套。使用該配置后,記得Build Settings中Code Signing Identity的子選項(xiàng)都要配置為iOS Developer垒探。
- 發(fā)現(xiàn)Certificate中添加了專門(mén)用于生成服務(wù)器推送證書(shū)的功能妓蛮。(估計(jì)早就更新了,之前沒(méi)在意)
- 新的itunes connect功能真的挺好用圾叼,相較原來(lái)的版本慢慢的幸福感蛤克。
- 慨嘆下目前Apple的審核速度,真實(shí)快啊夷蚊,上傳到上架one day构挤。
可利用的資源
- watchOS官方資源(包括Human Interface Guidelines、App Programming Guide for watchOS 等)
- swift官方資源
- Raywenderlich
- 貓神相關(guān)文章(雖然是watchOS 2的惕鼓,但是很受用)
- 圖形素材:dribbble(尋找創(chuàng)意)筋现、easyicon(圖標(biāo))、MakeAppIcon(iPhone App圖標(biāo)與watch App圖標(biāo)生成)
小結(jié)
Focus會(huì)持續(xù)更新箱歧,目前主要解決了我自己的一些痛點(diǎn)夫否,希望她也能夠幫助到你。如果有什么好的建議歡迎留言討論叫胁。Watch中的App種類確實(shí)很有限凰慈,不像iOS的這么豐富,有好的產(chǎn)品創(chuàng)意也歡迎一起討論驼鹅。watchOS 3.0的更新讓Apple Watch煥發(fā)了新的生機(jī)微谓,有了不少新的可能森篷,讓我們一起把我們的Apple Watch豐富起來(lái)吧_。
最后附上50個(gè)促銷代碼豺型,感興趣的同學(xué)可以下載使用仲智。