我們一起聊聊 React Native 進(jìn)軍混合現(xiàn)實(shí)
本期共享的是 —— 一個(gè) React Native Fork(復(fù)刻倉庫)支持開發(fā)蘋果 Vision Pro。具體而言,一個(gè)新的 React Native 開源復(fù)刻項(xiàng)目將 React Native 引入了蘋果的 Vision Pro 頭顯產(chǎn)品,允許移動(dòng)開發(fā)者為混合現(xiàn)實(shí)頭顯開發(fā) App。
蘋果 Vision Pro 是去年 6 月蘋果公司在其年度全球開發(fā)者大會(huì)上官宣的混合現(xiàn)實(shí)頭顯,是一款集 AR(增強(qiáng)現(xiàn)實(shí))和 VR(虛擬現(xiàn)實(shí))功能于一體的 MR 頭顯(混合現(xiàn)實(shí)頭戴式顯示設(shè)備)。
簡而言之,Vision Pro 類似于鄧紫棋在其《啟示錄》專輯的里裝備的那個(gè)眼鏡,可以化身“頭號(hào)玩家”飛升元宇宙。樂土,啟動(dòng)!
而就在昨天,全球第 1
臺(tái)零售版 Vision Pro 才正式被抱出線下實(shí)體旗艦店,你我皆為蘋果歷史見證人。
理論上可以將移動(dòng) App 移植到蘋果 Vision Pro 的 visionOS 操作系統(tǒng)。
畢竟,M.P. 在最近的 React Native 播客中估計(jì),visionOS 高達(dá) 80-90%(以上)的代碼與 iOS 系統(tǒng)相同。M.P. 是軟件工程咨詢公司 Callstack 的技術(shù)主管。Callstack 負(fù)責(zé)該項(xiàng)目的軟件工程師 O.K. 如是說,這兩者的基建其實(shí)都是 UIKit。
換而言之,當(dāng) Callstack 與 Rebecker Specialties 的創(chuàng)始人 M.H. “夢(mèng)幻聯(lián)動(dòng)”,為 Vision Pro 創(chuàng)建 React Native App 時(shí),它們發(fā)現(xiàn)沒法在 visionOS 系統(tǒng)上使用該框架。因此 Callstack 決定創(chuàng)建一個(gè) React Native 的分支。通過該分支,Callstack 構(gòu)建了一個(gè)新的開源樹外平臺(tái)(out-of-tree platform),可以和 visionOS 系統(tǒng)“夢(mèng)幻聯(lián)動(dòng)”。它允許開發(fā)者將 App 重新定位到 Vision Pro,并完全支持平臺(tái) SDK。
“蘋果 Vision Pro 最顯著的特點(diǎn)當(dāng)然是這種沉浸式空間體驗(yàn),其中一大坨 App 彼此相鄰,”該復(fù)刻倉庫的開發(fā)者 O.K. 如是說。“這就是我們將為 React Native 帶來的愿景,這樣用戶可以輕松鏡像 App,并充分利用蘋果 Vision Pro 用戶的空間。”
VisionOS 開發(fā)的怪癖
將 VisionOS 系統(tǒng)視為具有三種類型的空間內(nèi)容會(huì)有所幫助:
- 窗口
- 3D 體積
- 空間
窗口是包含傳統(tǒng)視圖和控件的矩形框,并且可以包含某些 3D 內(nèi)容。體積更像是一個(gè)大立方體,可以展示任意角度的 3D 視覺體驗(yàn)。最后是空間……以及其他的一切。默認(rèn)情況下,App 啟動(dòng)到共享空間,它們并行不悖,就像桌面上的多個(gè) App 一樣。
圖片
“App 可以使用窗口和體積來顯示內(nèi)容,且用戶可以將這些元素重新定位到它們喜歡的任意位置,”蘋果 VisionOS 官網(wǎng)如是說。 “為了享受身臨其境的體驗(yàn),App 可以打開一個(gè)專屬完整空間,其中只會(huì)顯示該 App 的內(nèi)容。在完整空間內(nèi),App 可以使用窗口和體積,創(chuàng)建無限的 3D 內(nèi)容,打開通往不同世界的門戶,甚至讓大家完全沉浸在環(huán)境中?!?/p>
蘋果 Vision Pro 是一款混合現(xiàn)實(shí)或擴(kuò)展現(xiàn)實(shí)頭顯,而不僅僅是虛擬現(xiàn)實(shí)?;旌犀F(xiàn)實(shí)更像是虛擬疊加層,允許用戶與周圍環(huán)境交互。O.K. 和 M.P. 在播客中共享道,這款頭顯允許用戶使用手、聲音和眼睛進(jìn)行導(dǎo)航,所有這些都由系統(tǒng)層處理,不需要開發(fā)者進(jìn)行編程。
Vision Pro 仍然供不應(yīng)求 —— 截至 1 月份的播客,Callstack 仍然在搶購候補(bǔ)名單上 —— 所以 O.K. 只在模擬器上測(cè)評(píng)開發(fā),但它表示,操作系統(tǒng)將突出顯示用戶查看的位置并選擇元素,然后可以通過手指動(dòng)作激活 —— 就像點(diǎn)擊觸控板一樣。
備胎方案
O.K. 表示,該團(tuán)隊(duì)確實(shí)將 Flutter 視為 React Native 的備胎方案,但最終還是選擇了后者,因?yàn)樗且粋€(gè)更成熟的框架,在蘋果應(yīng)用商店和 Google Play 內(nèi)發(fā)布的 App 中搶占的市場(chǎng)份額更大。它補(bǔ)充道,React Native 平臺(tái)將允許這些開發(fā)者將其移動(dòng) App 擴(kuò)展到 visionOS 系統(tǒng)。
NativeScript 是創(chuàng)建 VisionPro App 的另一個(gè)備胎。它為多個(gè) JS 框架提供 VisionOS 支持,包括 React 和 Vue,允許開發(fā)者將 JS 與蘋果的 SwiftUI “夢(mèng)幻聯(lián)動(dòng)”。雖然但是,相比之下,React Native 更容易、更快,M.P. 如是說。
構(gòu)建樹外平臺(tái)
O.K. 將針對(duì) visionOS 系統(tǒng)的 React Native 分支與微軟 Windows 的 React Native 分支進(jìn)行了比較。
“它允許我們采用眾所周知的 JS 編寫的相同的代碼庫,并在 MacOS 系統(tǒng)和 Windows 系統(tǒng)上運(yùn)行,我們還允許它在 VisionOS 系統(tǒng)上運(yùn)行,”它講道。
它補(bǔ)充道,在構(gòu)建 React Native VisionOS 框架時(shí),團(tuán)隊(duì)利用了另一個(gè)框架 Swift UI 來彌合 React Native 和 Vision Pro 視覺方面之間的差距。
團(tuán)隊(duì)發(fā)現(xiàn)不可能甚至沒有必要遷移所有 React Native 代碼。舉個(gè)栗子,某些 API 在 Vision Pro 上毫無卵用。
“檢索當(dāng)前用戶屏幕信息的 API 對(duì)于此平臺(tái)而言毫無卵用,因?yàn)槠聊痪嚯x我們的眼睛有且僅有一厘米,我們無法訪問用戶正在查看的屏幕;但對(duì)于視覺效果,我們使用窗口來顯示東東,”它說道。 “這就是為什么大多數(shù)庫開發(fā)者和維護(hù)者需要解決某些常見問題,才能讓它們的庫在此平臺(tái)上奏效?!?/p>
只有使用原生代碼的庫才需要遷移;根據(jù) O.K. 一月份詳細(xì)介紹如何遷移庫的帖子,純 JS 庫將開箱即用。當(dāng)然,該框架旨在解決某些挑戰(zhàn)。O.K. 自愿表示,任何致力于轉(zhuǎn)換其庫的開發(fā)者都可以向它尋求幫助。