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