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