Apple TV Tech Talks 東京場

Apple TV Tech Talks 東京場

蘋果在 2015 年十二月到 2016 年一月,在世界幾個主要都市舉辦一系列名為 Apple TV Tech Talks 的官方技術講座,主題為去年十月推出的第四代 Apple TV 上的 App 開發。

KKBOX 派出兩員參加 2016/1/21 在東京新宿舉辦的場次。在早上八點,冒著低溫趕到大樓林立的東京都廳對面的活動場地希爾頓飯店後,開始一整天的活動。蘋果派出三名 envanglist,進行總共九場、每場約三十分鐘的英文技術演講,也就是除休息時間外的連續五的小時的課程,除了與開發本身的議程之外,也包含部分設計與市場行銷的議題。

此外也有一個 Q&A Lounge 供開發者詢問開發過程中所遇到的問題。我們之前遇到了一些問題,也在現場獲得解決,不過我們現在還不方便透露我們遇到了怎樣的問題,先就當天的內容做一摘要。

本文也刊於 Rocket Café

CZM6X5JWkAA862j

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)—雖然用戶也習慣鼠標操作,但鼠標是種精確的操作、是工作時使用的,當用戶回到家中,我們應該要讓用戶忘記工作。

與手機相較,手機是屬於個人專用的裝置,但電視則是整個家庭一起共享,因此需要考慮多人共同使用的情境。而電視使用遙控器作為輸入裝置,資料輸入的方便程度,也不及手機。

Best Practice

因此,在 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)。

Local Storage

技術相關 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 移動管理機制)達成。

像如何使用 GCControllerGCMicroGamePadGCEventViewController 等 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 呼叫的物件。

IMG_2249

IMG_2250

蘋果其實有放出 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 上時,也可以考慮改變商業模式。

iOS and tvOS Business Models

在考慮商業模式的時候,便可以考慮是否使用 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 頁面的內容。

Top 10 iOS Markets

蘋果花了一些時間介紹如何對 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

IMG_2272

想要被蘋果 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.

About zonble

iOS Developer at KKBOX.
This entry was posted in Events and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *