蘋果在 2015 年十二月到 2016 年一月,在世界幾個主要都市舉辦一系列名為 Apple TV Tech Talks 的官方技術講座,主題為去年十月推出的第四代 Apple TV 上的 App 開發。
KKBOX 派出兩員參加 2016/1/21 在東京新宿舉辦的場次。在早上八點,冒著低溫趕到大樓林立的東京都廳對面的活動場地希爾頓飯店後,開始一整天的活動。蘋果派出三名 envanglist,進行總共九場、每場約三十分鐘的英文技術演講,也就是除休息時間外的連續五的小時的課程,除了與開發本身的議程之外,也包含部分設計與市場行銷的議題。
此外也有一個 Q&A Lounge 供開發者詢問開發過程中所遇到的問題。我們之前遇到了一些問題,也在現場獲得解決,不過我們現在還不方便透露我們遇到了怎樣的問題,先就當天的內容做一摘要。
本文也刊於 Rocket Café。
Living Room Experience – 客廳中的使用體驗
蘋果以為,蘋果透過了 iPhone 與 iPad,創造了最近幾年行動裝置上的變革,並且為許許多多的開發者帶來在行動裝置上開發、銷售軟體的機會,接下來,蘋果希望將這樣的改變與機會帶到電視上,讓開發者有更多的機會,把自己的軟體帶到無數用戶的客廳中。
原本在 iOS SDK 中的許多 Framework,像 UIKit、SpriteKit、Metal 等,在 Apple TV 上都可以使用,但是在 Apple TV 上,還有比 iPhone、iPad 更強大的 A8 晶片,原本在 iOS 上的應用移植到了 Apple TV 之後,可以享受更好的效能、呈現出更豐富的視覺效果。
但是,在設計電視應用的時候,就要注意 Living Room Experience—客廳中的使用體驗。Apple TV 是在客廳中的產品,與電腦及手機都不同,屬於另外一種情境,不該貿然就把電腦與手機上的使用體驗,直接移植到電視上。
與電腦相較,用戶在客廳中就是要放鬆與娛樂。因此,在 Apple TV 上應該要避免各種繁複的操作,像是在畫面中要選擇任何一個功能時,用的是可以容錯(forgiving)的 Focus 系統,讓用戶可以透過輕鬆橫畫與直畫,將焦點移動到下一個可以被選取的項目上,而不該使用精確操作的鼠標(cursor)—雖然用戶也習慣鼠標操作,但鼠標是種精確的操作、是工作時使用的,當用戶回到家中,我們應該要讓用戶忘記工作。
與手機相較,手機是屬於個人專用的裝置,但電視則是整個家庭一起共享,因此需要考慮多人共同使用的情境。而電視使用遙控器作為輸入裝置,資料輸入的方便程度,也不及手機。
因此,在 TV App 的設計上要注意:
- 在 Apple 載入資料的過程中
- 避免空白畫面,要讓用戶知道目前正在準備資料
- 在等待的過程中,可以同時教育用戶 App 功能,或是用一些素材娛樂用戶
- 盡可能事前就在背景載入資料,節省資料載入的時間
- 登入與授權
- 有必要的時候,才要用戶登入。像購物 App 應該要讓用戶先看到商品資料,等到用戶要購買商品時,才需要用戶登入
- 在註冊過程中,盡可能避免收集不必要的資料,像只需要知道用戶名稱與 email 即可
- 可以使用其他裝置做 web 等入,像是讓用戶用手機掃描 TV app 裡頭的 QR code,然後用手機登入
- 做一個與 TV app 搭配的手機 App,幫助用戶登入
- 如果有多個用戶使用,應該要實作帳號切換功能,像 AirBnb 就允許多個帳號(不過蘋果自己這方面都沒做好,一台 Apple TV 只能使用一個 Apple ID)
- 將還原購買功能做得更明顯,讓用戶使用 Apple TV 時,可以馬上還原曾經在手機上購買的虛擬商品
- Onboarding
- 要讓用戶可以盡早進入 App 中使用,避免過多的說明後,才讓用戶使用
- 在用戶使用到某項功能的時候,才顯示必要的說明
- 使用適當的語言與用戶溝通
- 可以參考 WWDC 2014 時提到的 Onboarding 設計
- 千萬不要在產品設計中使用鼠標
在視覺上:
- 盡量使用 Apple TV 上的 Parallax 透視效果,讓整個 Apple TV 上有一致的使用體驗。
- 要清楚。包含:畫面要讓用戶隔著一整個客廳的距離都可以看得清楚,文案不要含糊不清讓人誤解意思,而且盡量使用蘋果為了清晰顯示而設計的 San Francisco 字體。
- 不要放置無用的訊息。電視就是讓人娛樂的,不要用過多的訊息造成用戶的負擔,而且盡量使用大螢幕的優點。
此外,由於 Apple TV 是放置在家中,不像人們會經常帶著行動裝置移動,因此 Apple TV 會一直保持在連線狀態中(always connected),因此在使用體驗上,不該設計離線狀態。也就是,用戶資料應該盡可能儲存在雲端上,Apple TV 對於本地儲存也有相當大的限制,而當一套 app 的檔案大小很大時,也不需要讓用戶一開始就下載完整的檔案,可以將整個 app 的資料切成許多小包,有需要的時候再透過網路載入(on-demand resource loading)。
技術相關 session
在 Tech Talks 上與技術相關的 session 包括:
- 負責 Apple TV 上整個資訊瀏覽系統的 Focus Engine
- 如何把 Siri Control 當做遊戲搖桿使用,以及如何處理其他外接 MFi 搖桿的事件
- Video Player 元件(AVFoundation)以及 HTTP Live Streaming Video 串流
- 如何開發 TVML app
- Apple TV 上的本機資料、與雲端資料儲存
- 如何提昇顯示效能
- 如何實作 Top Shelf…等
其中有相當多是我們從過去的 iOS 開發經驗、以及去年十一月份我們開始透過文件學習 Apple TV 開發時就掌握的技術。例如在顯示效能方面,主要就是各種的 Core Animation 技巧,像是在 UI 中盡可能減少半透明的圖層,盡量將多個圖層壓扁成同一一個圖層,要使用陰影時,避免只設定 Shadow Radius,而是還要設定 Shadow Path…等。
在技術上主要獲得的新知是對 Focus Engine 的進一步了解,像是我們之前遇到在某些狀況下無法正確將 Focus 移動到某些元件上,我們學到可以透過 customize focus guides (一套被建立在 auto-layout 系統下的 focus 移動管理機制)達成。
像如何使用 GCController
、GCMicroGamePad
、GCEventViewController
等 class,把 Siri Remote Control 變成搖桿,以及連接更多的 MFi 搖桿,也說得相當完整,不過畢竟我們還沒有開始開發 Apple TV 上的遊戲應用,就沒有留下多少筆記。
蘋果也透露了在 tvOS 中,可以對每個 view 呼叫一組叫做 _whyIsThisViewNotFocusable
的 private method,用來知道為什麼某個元件無法變成 focus 起來的 view。話說在 Swift 裡頭無法直接呼叫 private 的 Objective-C API 對不對?他們還特別教你…你還是可以呼叫 performSelector
。
在媒體播放部分,蘋果鼓勵開發者在播放影片的時候,使用 AVPlayerViewController
,因為這個 class 不但具備影片播放功能,還可以顯示額外的影片 metadata,像是標題、敘述等,還可以在調整播放時間的時候,直接在時間軸上顯示該時間的影片預覽圖片(蘋果稱這個功能叫做 Trick Play),也可以處理多國語文字幕—如果一部影片有字幕,在 Apple TV 上,還可以使用 Apple TV 中 Siri 的 “What did she say” 功能,也就是,當我們看影片時,覺得聽不清楚某個人的台詞時,就可以叫出 Siri,問 Siri「她剛剛說了什麼」?Siri 就會跳回不久前的片段,並且顯示字幕。
要讓 AVPlayerViewController
顯示影片 metadata,需要設定一個 ACMetadataItem
物件給 player。要提供 Trick Play,則要在 m3u8 檔案中,準備一軌為 IFrame 的 track。至於字幕的部分,可以參考 WWDC 2013 影片 Preparing and Presenting Media for Accessibility。
在 TVML 部分,蘋果除了提到可以使用各種不同的 template 呈現 App 的外觀外,也提到如何使用 native code 呼叫 TVML 裡頭的 JavaScript,以及反過來用 JavaScript 呼叫 native code。要讓 TVML 的 application controller 執行一段 JavaScript,便是向 TVApplicationController
的 instance 呼叫 -evaluateInJavaScriptContext:completion:
;反過來,則要先建立一個 confront JSExport
的一套 protocol,再由某個物件實作這套 protocol,最後,呼叫 -evaluateInJavaScriptContext:completion:
,在裡頭對拿到的 JSContext
物件呼叫 -setObject:forKeyedSubscript
,將這個物件設定到 JSContext
中,便可是可以讓 JavaScript 呼叫的物件。
蘋果其實有放出 Tech Talks 上使用的 sample code 與相關說明,請參考 蘋果網站。
商業與行銷相關 session
蘋果在最後一場 session 講到的是 TV app 的行銷相關主題。
蘋果拿出目前 App Store 中的數據,認為 TV app 與 mobile app 的市場相當不同,拿 iOS 的定價策略,在 Apple TV 上不見得行得通。
在 iOS 上,Free 與 Freemium App 總共佔了八成,付費 App 僅佔兩成,但 TV app 中,Free App 與 Freemium App 中僅佔一半,有一半的 App 是付費 App,看起來 Apple TV 用戶會更習慣付費使用 App 的模式。因此,做 TV App 時,可以考慮與 iOS App 不同的商業模式,甚至同一套 App 做了 iOS 版本之後,在移植到 Apple TV 上時,也可以考慮改變商業模式。
在考慮商業模式的時候,便可以考慮是否使用 Universal Purchase。Universal Purchase 的意思便是:在購買了 iOS 版本之後,其實也就同時購買了 Apple TV 版本,iOS app 與 TV app 共用相同的定價,在手機購買之後,也會出現在 Apple TV 的「已購買 app」的列表中。不過如此一來,就無法就 iOS app 與 TV app 分別定價,如果想要使用不同價格販售,TV app 需要使用另外的 app ID 上架。
蘋果提供了目前十大 iOS App 的國家/地區排行,分別是美國、日本、中國、英國、澳洲、加拿大、德國、法國、韓國與台灣,強調想要擴張市場,一個可行的方向便是向海外擴張,如果是日本的開發者,在日本市場推出之後,便可以思考下一個目標便是英語版本,畢竟前十大地區就有美國、英國、澳洲、加拿大等四個英語國家,然後再考慮推出一些歐語版本。在推出其他語言版本時,務必要翻譯 App 裡頭,以及 App Store 頁面的內容。
蘋果花了一些時間介紹如何對 App Store 做最佳化,以及讓 App 被 App Store feature 的流程。在 App Store 上架的時候,我們可以對 App 設定關鍵字,關鍵字最長可以使用 100 個字元,使用逗號分隔,蘋果建議我們把 100 個字元全部用完,盡可能填入最多的相關關鍵字,中間不用加上空白;如果同一個關鍵字的英文有單數與複數之分,不用額外填入複數的版本,只要單數即可,App Store 上會自動把用戶輸入的複數關鍵字,與我們的單數關鍵字做好關連。
如果你希望蘋果 feature 你的 App,蘋果對 TV app 的標準是:
- 要夠獨特,之前沒有人做過
- 符合客廳中的使用體驗
- 充分發揮 Siri Remote Control 的能力
- 對第一次使用的用戶來說非常驚艷(fantastic)
- 效能也要好
蘋果選擇 Feature App 的流程是:
- 蘋果每週四更新一次 Featue App 的名單
- 遇到節慶(過年、聖誕)的時候,也會建立特別的名單
- 如果要在某個地區的 Store 被 feature,要有該地區的本土化翻譯內容
- 最好是搭配該 App 的初次 launch
想要被蘋果 Feature,可以寫信給蘋果:
- 寫信到
appstorepromotion@apple.com
- 寫上完整的產品介紹,而且務必要記得附上 App Store 裡頭的 product ID。蘋果特別強調 product ID,看來過去真的不少人忘記填寫。
- 提供接下來的產品發展方向(roadmap)
- 提供該 App 的 media-kit 等行銷素材
- 大概在第三次到第四次 release 版本的時候,會是聯絡蘋果的最佳時機
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.