WatchKit-Programing-Guide(WatchKit開發(fā)指南)

Apple Watch可以讓用戶以一種很私密,不招搖的樣式查看信息,用戶可以在不拿出手機的情況下,通過查看Apple Watch快速的獲取重要的信息.

Apple Watch 界面

Snip20171021_11.png

watchOS Transition Guide
Apple Watch app由兩個獨立的部分組成:

  1. Watch App和WatchKit Extension.Watch App包含app中所有界面的storyboard和資源文件.
  2. WatchKit Extension包括管理這些界面和如何響應用戶的交互的代碼.
    這兩部分雖然一直都是iOS app的一部分.但是其在WatchOS 1 和WatchOS 2上的配置和安裝是不一樣的.在WatchOS 2上這兩部分都被安裝和運行在Watch上.但是在WatchOS 1,app運行在Watch上,WatchKit extension運行在用戶的手機上.
    Watch app和WatchKit extension一起作用來展示app的內容.除了Watch app的界面外,還可以提供一些專門的界面(optional)來展示數(shù)據(jù).當然這些界面也是Apple Watch設計的一部分,它們可以更快速的給用戶傳遞重要的信息.

The Watch App

當用戶從home screen點進來加載的的是Watch app.可以支持一個或多個screen.使用Watch app可以展示能夠在Apple Watch上顯示的所有內容(一般是iOS app內容的一個小子集).Watch app和WatchKit extension協(xié)同工作.Watch app相當于臉,包含所有界面的storyboard和資源文件.WatchKit extension相當于大腦,包含管理內容,如何響應用戶的交互和更新界面的代碼.

The Glance Interface

Glance(optional)是一個只顯示您app中最重要信息的界面.顧名思義,glance就給用戶快速瀏覽內容用的.glance不能滾動,整個界面必須是一個單一的screen.glance中的信息是只讀的,所以不能包含按鈕,switch或者其他可交互的控制.點擊glance界面可以跳到您的Watch app.Glance雖然不能單獨運行,但是它的安裝和您的Watch app安裝是分開的.同樣glance的storyboard也在Watch app中,其代碼配置在WatchKit extension中.

Custom Interfaces for Local and Remote Notifications

Apple Watch和其配對的手機一起工作顯示本地或者遠程的通知.首先蘋果會用最簡單的界面–short look–來顯示進來的通知,如果用戶的動作表明他想進一步了解該信息的話,取而代之的是long look界面,此界面會顯示該通知的更多內容.您可以自定義long look的界面,為其添加自定義的圖形或者對其數(shù)據(jù)進行排版.在iOS 8中,Apple Watch對actionable通知進行了動態(tài)支持.actionable通知可以為您的通知界面添加相關的動作按鈕.比如對于一個約會要求的通知可能包含接受和拒絕選項.當您的iOS app注冊了actionable通知后,Apple Watch會自動的為其添加合適的選項.您需要做的就是在WatchKit extension中處理用戶的選擇.

Complications

Complications(組件)是顯示在表面的用于傳達重要信息的小元素.當用戶查看時間的時候,組件總是顯示的.大多數(shù)表面支持至少2到3種組件.用戶可以自定義要顯示哪些組件.

Designing Your User Interface

Apple Watch本身是比較個性化的,所以需要對其進行特殊的設計.您的界面需要展示重要的信息,能快速導航和交互.這樣的界面就意味著您不能單純的復制iOS app,而是要和其進行互補.
Apple Watch Human Interface GuideLines

在現(xiàn)有的iOS項目添加Watch App

  1. 用Xcode打開iOS工程.
  2. 選擇 File > New > Target,選擇Apple Watch部分.
  3. 選擇WatchKit App點擊next.
  4. 如果您打算實現(xiàn)glance或者自定義通知界面,選擇相應的選項.對于通知界面,即使您不打算馬上實現(xiàn)也建議您勾選Notification Scene選項.因為該選項會為您的項目添加一個額外的debug界面,否則以后您就只能手動添加了.
  5. 點擊finish.Xcode會為您的Watch app和WatchKit extension添加需要的文件到iOS項目中. bundle IDs會自動基于您iOS項目的 bundle ID進行配置,這三個的bundle ID必須一致,如果您更改了iOS項目的bundle ID,相應的必須對Watch app和WatchKit extension的bundle ID進行修改.

Build, Run, and Debug階段Xcode還會為Watch app的bulid和debug單獨的創(chuàng)建一個build scheme

當創(chuàng)建Watch app target的時候,Xcode會自動的配置一個build scheme來運行和debug您的Watch app.使用這個scheme可以讓您的項目在iOS模擬器或真機上運行.對于包含glance和自定義通知界面的app,您必須配置額外的build schemes來對這些界面進行測試.使用glance scheme在模擬器上來debug您的glance界面,或者使用notification scheme來測試動態(tài)和靜態(tài)的通知界面.
配置自定義為glances和notifications創(chuàng)建build schemes:

  1. 選中存在的Watch app scheme.
  2. 在scheme菜單中選擇Edit Scheme.
  3. 復制存在Watch app scheme,給這個schem一個合適的名字.比如”Glance - My Watch app”,來這個scheme是用來運行和debugglance的.
  4. 選擇scheme editor左側列表的run.
  5. 在info列,選擇合適的可執(zhí)行scheme.

Watch App的生命周期

用戶交互決定著app的啟動和生命周期.可以通過Home screen,glance,自定義UI界面的通知啟動您的app,這些方式都能加載您的Watch app并且和WatchKit extension進行通信.Watch app和WatchKit來回的交互信息直到用戶停止交互.此時iOS會掛起extension,直到用戶的下一次交互.在啟動時WatchKit自動的加載適當?shù)膕toryboard.如果用戶瀏覽的是glance,WatchKit會加載storyboard中的glance場景.如果用戶直接啟動的是app,watchKit會加載您的app.在場景加載完以后,watchKit會請求WatchKit extension來創(chuàng)建和界面控制器通信的對象.


WatchKitProgrammingGuidelaunch_cycle_2x.png

和iOS app共享數(shù)據(jù)

在watchOS ,iOS app和WatchKit extension使用app group來存儲共同的數(shù)據(jù)文件.app group是線程安全的.一般的,每一個進程在其單獨的沙盒環(huán)境中運行,但是app group可以讓兩個進程共用一個目錄,并且能共享文件和user defaults.

和iOS app進行通信

在watchOS 2,WatchKit extension使用Watch Connectivity framework和其父iOS app進行通信.這個framework支持在兩個進程間傳遞文件和字典數(shù)據(jù)提供雙向通信.這個framework還支持后臺發(fā)送數(shù)據(jù)以便在啟動的時候等待其他app.

implementing a Page-Based Interface

通過設置兩個界面的next-page在storyboard中配置的Page-Based界面.下面是在界面之間創(chuàng)建next-page segue.

  1. 在storyboard中為每一個page添加界面控制器.
  2. Control-click app主界面控制器,拖線segue到另一個界面控制器scene.
  3. 松開鼠標.
  4. 選擇next page關系.
  5. 同樣的方法脫其他的控制器,在storyboard中的順序就是最終顯示的順序

Implementing a Hierarchical Interface

繼承結構的導航結構WatchKit會使用當前界面的segues或者調用pushControllerWithName:context: 方法來跳到下一界面.在storyboard界面,可以給button, group或者table row創(chuàng)建跳轉的push segues.如果想要手碼實現(xiàn)跳轉,可以調用pushControllerWithName:context: 方法.當push出一個想的界面的時候,可以使用context來傳遞參數(shù).這個參數(shù)會在界面顯示之前就被傳遞到控制器.push出的控制器會在左上角顯示一個”<”符號,用來指示可以返回.當用戶點擊這個按鈕或者從邊緣向右滑動的時候,WatchKit會自動dismiss掉棧最上面的控制器.也可以通過 popController方法實現(xiàn).但是不能dismiss掉app的主界面.

Presenting Interface Controllers Modally

modal出來的界面會暫時中斷當前的導航流來提示用戶或者顯示一些信息.您可以從任一界面modal出一個界面控制器,具體實現(xiàn)如下:

  1. 在storyboard中創(chuàng)建一個modal segue.
  2. 調用presentControllerWithName:context: 方法顯示一個單一的控制器.
  3. 調用presentControllerWithNames:contexts: 方法來多個使用page-based布局的界面.
    把創(chuàng)建的modal segue拖到您想要顯示的界面控制器上.當使用modal segue連接多個界面控制器的時候,要先使用next-page segue把界面之間連接起來,然后modal segue連接組中的第一個界面就可以.如果您連接的是中間的控制器,那么前面的控制器不會被顯示.左上角會顯示界面控制器的title.當用戶點擊的時候,會關閉moda出的界面.比如說,當您顯示信息的時候,可以把這個title設成Done或者Close.如果沒有指定的話,會默認顯示Cancle.

WatchKit提供了以下幾種方法來顯示圖片

  1. WKInterfaceImage類來將一個單獨的圖片或者一個幀動畫作為獨立的內容顯示.
  2. WKInterfaceGroup,WKInterfaceButton和WKInterfaceController可以指定圖片作為內容的背景.
  3. WKInterfaceSlider滑桿的顯示增大和減小的圖片.
  4. WKInterfaceMovie中用來顯示video或者audio的海報.
  5. WKInterfacePicker的內容可以包含image.

Specifying Your Image Assets

以下是創(chuàng)建圖片資源時應遵循的準則:

  1. 必須使用PNG格式.
  2. 為您的界面創(chuàng)建大小合適的圖片,對于image大小不能控制的使用setWidth: 和 setHeight: 方法來保證image以一個合適的大小顯示.
  3. 使用image assets來管理圖片.image assets可以讓您為不同的設備指定不同的圖片.

Caching Images on the Device

在watchOS 1,可以使用device-side image caches來提高高頻率使用的圖片的性能.緩存可以讓圖片從WatchKit extension到Apple Watch的傳遞只進行一次,卻可以使用多次.可以使用WKInterfaceDevice的addCachedImage:name: 或者addCachedImageWithData:name: 方法緩存圖片.然后通過以下方式訪問:

  1. 對于WKInterfaceImage對象,調用setImageNamed: 并指定緩存中image的名字.
  2. 對于WKInterfaceGroup和WKInterfaceButton對象,調用setBackgroundImageNamed: 方法來指定緩存image的名字.
    重要: 當緩存圖片的時候,使用animatedImageWithImages:duration:方法來為所有動畫的frame和緩存的image創(chuàng)建一個單獨的UIImage對象.不要單獨的緩存分開的圖片.

Notifications

Apple Watch可以使用iOS中支持的可交互通知.如果您的iOS app支持通知,Apple Watch會在合適的時間顯示這些通知.當iPhone收到遠程或者本地通知的時候,iOS決定是否在iPhone或者Apple Watch上顯示該通知.對于發(fā)送到Apple Watch上的通知,系統(tǒng)會巧妙的讓用戶知道有一個通知到啦.如果用戶選擇瀏覽通知,系統(tǒng)會先顯示一個通知的概括,接下來顯示詳細信息.用戶可以關閉通知,加載Watch app,或者點擊通知上的按鈕.app不需要做任何事就能顯示通知.系統(tǒng)會為通知顯示一個默認的界面,當然您也可以自定義通知的界面.

The Short-Look Interface

用戶最開始看到的通知是Short-Look界面,如下圖所示.short-look界面不能滾動而且不能自定義.系統(tǒng)會使用一個固定的模板來顯示app的名字,icon和存儲在本地或遠程通知中的內容.如果用戶繼續(xù)瀏覽這個通知,short-look會快速的轉換成long-look通知.short-look中的title要簡潔明了.對于本地通知通過指定UILocalNotification的alertTitle屬性設置,對于遠程通知,在字典中中添加title和alert key.更多信息請看這里:


WatchKitProgrammingGuideshortlook_calendar_2x.png

The Long-Look Interface

Long-Look界面是一個可以顯示通知的內容和一些按鈕的可以滾動的界面.如果您沒有自定義Long-Look界面,系統(tǒng)會默認提供一個包含app icon,title和alert的界面.Long-Look分為三部分:

  1. sash包含app icon和name.其顏色是可配置的(global tint color).
  2. 內容區(qū)域包含通知的內容,關于如何自定義這塊區(qū)域的內容,請看:Managing a Custom Long Look Interface.
  3. 底部區(qū)域包含一個消失的按鈕和在iOS app中注冊的一些時間.下圖是一個包含一些按鈕的通知界面:
    WatchKitProgrammingGuidelonglook_calendar_2x.png

    點擊app icon可以加載您的Watch app.前臺的工作可以移交給您的Watch app和extension.后臺的動作可以移交給您的iOS app.點擊Dismiss按鈕可以關閉彈框,點擊其他區(qū)域不做任何動作.關于如何自定義long-look界面請看這里:Managing a Custom Long Look Interface.
    摘錄自:WatchKit Programming Guide(WatchKit開發(fā)指南)官方翻譯及總結
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容