來源:知乎
據(jù)說已經(jīng)有上千個應(yīng)用提交給了蘋果,但是今天 Apple Watch 上市預(yù)約預(yù)售,第一批據(jù)說只有 10 余個通過,看起來很難通過的樣子…
作為首批適配了Apple Watch的應(yīng)用的產(chǎn)品狗,來答一下。真是虐了好幾個月,我都沒時(shí)間做早餐了快。。。 把各種坑擺出來說一說吧,希望對大家有幫助。
利益相關(guān):搜狗地圖產(chǎn)品負(fù)責(zé)人。
1. 最最基礎(chǔ)的
一定務(wù)必仔細(xì)研讀一下兩個文檔。如果有什么功能你想做但是文檔里沒找到的,八成就是沒接口支持,做不了(看似廢話,但真的是最有用的,所有你能做的你只能在這里面挖掘)
Apple Watch Human Interface Guidelines: Designing for Apple Watch
2. 交互和UI類
1> Watch只支持這么幾種手勢:系統(tǒng)的點(diǎn)擊、force touch、digital crown旋轉(zhuǎn),不支持自定義手勢。交互方式上會比較受限,在手機(jī)App上能實(shí)現(xiàn)的手勢很多都在Watch上用不了。
2> Crown的所有操作都是Watch定義好的,不要試圖對Crown的操作做任何定義。
3> 蘋果希望Glance能在不同時(shí)間不同地點(diǎn)展示不同的內(nèi)容。那么問題來了,Glance是依靠模板展現(xiàn)的,并且一旦你選定一個模板就不能改了。也就是說不同內(nèi)容都要用同一個模板展現(xiàn)……臣妾做不到啊……所以選模板很重要,需要能適應(yīng)所有的情況。
3. 開發(fā)類
1> 大家之前應(yīng)該都看過原生的App多么炫酷,但是實(shí)際上自己做的時(shí)候會有很多問題,因?yàn)楹芏嘟涌诓粚ν?。比如不支持動畫(只支持幀動畫),只有原生地圖支持動態(tài)渲染地圖引擎,意思就是原生的地圖可以扒拉放大縮小,其它家的就不可以。(嗯,我司是地圖類應(yīng)用,你感受一下這坑…)
2> Notification分為短通知和長通知,短通知顯示的是title,長通知顯示的是body。但是以前手機(jī)app通常只有body沒有title,所以要修改應(yīng)用的推送接口,支持title,否則短通知就是空的。
3> 盡可能把邏輯和功能放到擴(kuò)展里面來實(shí)現(xiàn),這樣響應(yīng)速度會比較快。除非有不支持的權(quán)限比如定位,是迫不得已要放到手機(jī)App里面來執(zhí)行的。但這樣響應(yīng)時(shí)間會很長,比較影響體驗(yàn),看怎么權(quán)衡吧。
4. 最最重要的,就是盡快找到真機(jī)適配。
模擬器真的是靠不住的,一定要盡快找到真機(jī)適配。我們按42mm的尺寸來做的設(shè)計(jì),在模擬器上跑的時(shí)候沒問題,一上真機(jī)就發(fā)現(xiàn)字體、圖片、布局都有幺蛾子,被裁的、被壓扁的…
大概就這些,供參考。
這次我要認(rèn)真的回答一下,
從WatchKit出來的時(shí)候開始玩,在公司負(fù)責(zé)Apple Watch的版本,自己上架過Apple Watch的應(yīng)用。
我隨便做的app已經(jīng)通過審核并且上架了,不是第一批也趕在用戶拿到表之前了。
Air Watch on the App Store on iTunes
非常簡單的app,就是在手表上面看看空氣質(zhì)量,這就是他的全部
真的是隨便做的。
我想說的其實(shí)是,不難通過,我是一次過的。
好好讀官方的HIG和Programming Guide。
開發(fā)方面說幾個tips吧
1、模擬器iPhone鎖屏的時(shí)候,手表會不可用,這是模擬器bug,真機(jī)沒這個問題
2、模擬器在iPhone app進(jìn)程沒啟動的時(shí)候可以喚醒iPhone的host app,真機(jī)不行(但是官方app可以,因?yàn)槟壳暗谌降腶pp全都是extension形式運(yùn)行,并不是watch上面的native app
3、模擬器在iPhone橫屏的時(shí)候,force touch手表會導(dǎo)致手表有一瞬間橫屏,放心,這個也是模擬器bug
4、真機(jī)的性能可能沒有你想象的那么好,特別是對于數(shù)據(jù)傳輸方面,并不是一直能保持很穩(wěn)定的速度,要盡量縮減iPhone和watch之間的數(shù)據(jù)傳遞,只在有數(shù)據(jù)變化的時(shí)候去做刷新
5、使用Darwin Notification來做iPhone和watch的雙向通知
這個特別重要,以至于需要解釋一下。
當(dāng)你的iPhone端數(shù)據(jù)變化的時(shí)候需要通知到watch,F(xiàn)oundation框架下的NSNotificationCenter是沒有用的,需要使用CoreFoundation的Darwin Notification,可以參考下notify.h上面的接口。
事實(shí)上不僅僅是watch和iPhone可以這么做,keyboard extension和host app也可以。(他們都是extension)。
6、使用presentTextInputControllerWithSuggestions來進(jìn)行語音輸入
7、構(gòu)建UI的一些技巧
A. 使用嵌套的group來處理一些布局關(guān)系
B. 選中多個組件可以合并調(diào)整他們的位置關(guān)系
C. 可以對38mm和42mm建立不同的size
D. 使用startAnimatingWithImagesInRange來實(shí)現(xiàn)動畫,要準(zhǔn)備好一堆的圖
E. 利用hidden來做一些界面變化的效果
其他的想到什么再補(bǔ)好了