tvOS的開發初探

2021-09-30 12:56:11 字數 1698 閱讀 5739

steve不幸離世已經過去很久了,但是人們一直翹首以盼著這款產品。就在昨天2023年9月9日,超過四個春秋的期盼,我們終於等來了這個禮物,雖然可能與steve對這款產品的願景和理想有所差距,但是革命的步伐已經堅實的邁出了第一步。

我和其他教程團隊的成員已經開始深入研究tvos sdk,並且正在努力準備一些有價值的tvos教程(通宵達旦!),在此同時,我想從乙個ios開發者的視角與大家分享我對tvos的初步印象。

讓我們一**竟吧!

讓我們來看看以下這些資訊:

先前我提過,為tvos開發應用有兩種方式,第一種就是通過tvml、tvjs和tvmlkit技術。如果這些縮寫對於你們來說非常陌生,那麼不要著急,這就告訴你們他們都是什麼:

如果你是一名經常使用原生apis開發原生ios應用的開發者,那麼看到這些類似前端的技術可能會有點退縮。但希望你能保持一顆學習的心,學習了解這些新的強大的特性。

誠然tvmlkit還有許多知識點,如果你希望基於它開發一款tvos應用,那麼我提到的一些文件是非常值得你們去查閱參考的。這裡我著重推薦大家首先看看如何使用選單導航類的模板,比如menubartemplate、maintemplate、searchtemplate等。然而,如果你希望使用者不只是被動的通過你的tvos應用**或收聽內容,而是希望使用者與應用有更多的互動,給使用者高質量的使用者體驗,那麼你們就需要了解如何開發完整的自定義的tvos應用。

儘管如此,如果想開發自定義的tvos應用,還是有許多新的知識需要我們學習,作為一名ios開發者,也應該掌握甚至精通這些新的知識。

tvos採用了乙個被稱為focus engine的引擎系統,它在整個tvos中有且只有乙個。該引擎負責響應當使用者使用遙控器上的手勢操作或按鍵操作對選單或內容進行上下左右的選擇。

focus engine會自動根據使用者的選擇決定要聚焦或展示的檢視,你不需要在**中做任何類似選中或導航的處理。比如說,此時展示的介面是你已經在storyboard中設計好的檢視布局,其中有乙個檢視是當前聚焦狀態,那麼當使用者通過手勢往右滑動時,focus engine會自動根據當前聚焦的檢視找到與之相鄰的左邊的檢視,並將其選中和聚焦。

雖然ios開發者在tvos應用的開發過程中,主要使用的是一些已經比較熟悉的ios框架,但是也有一些tvos特有的框架需要開發者們去了解掌握,比如像新加入的tvservices框架。

tvservices的主要作用是描述你的應用的內容,以便tvos在首頁的頂部字段顯示。在首頁頂部字段顯示的應用都是使用者自己設定的,使用者可以將他們認為最為常用的或最為重要的應用放在首頁頂部字段,便於快速開啟或瀏覽其中主要資訊。

你可以使用你知道的處理手勢操作的api去監聽滑動或輕點,還有一些新的api去監聽遙控器上不同的按鈕,比如pressesbegan()pressesended()presseschanged()pressescancelled()

tvos有很健壯的遊戲技術作為支撐,spritekit和scenekit都可以在tvos中正常工作,在keynote中crossy roads開發者展示了他們的tvos遊戲,該遊戲使用unity開發,所以這也暗示著在不久的將來tvos也會支援unity開發的遊戲。

或許目前關於tvos比較有疑惑的兩點就是本地儲存和應用大小的限制。

一定要牢記這點,它對於你設計tvos應用的結構時很關鍵。這裡列出了一些規則:

另乙個限制是關於應用大小的限制,規定不能超過200mb。

Linux開發初探

堅持用了十幾天的linux作業系統,學會了很多的東西,但現在必須得抉擇如何選擇開發工具。在這些天的開發中,各種linux下的ide都有 所嘗試。一向看好的code blocks還是過於簡單,用了一陣時間以後還是選擇了放棄 後來又嘗試了sun的netbeans,雖然ide的介面很 棒,但是在win下面...

java 敏捷開發初探

1.領域建模,這在本質上包括了所有的資料實體以及它們之間的關係,但是沒有屬性。這有助於定義一些最初的領域概念和相互之間的關係。領域建模一般是開發者與領域建模專家和熟悉業務的人一起制定的,包括使用者和業務分析人員。2.使用者介面原形 4.使用者故事,但使用者故事比用例更短 每個一般是一到三句話。其餘的...

DAPP開發初探 永存的留言

truffle unbox react pragma solidity 0.4 19 contract storage message private wordarr function setword string s,string t public function getrandomword u...