iPhone Duo多螢幕互動開發
🕒 07:572026/9/29 11:322,057 字13 張照片
本講介紹 iPhone Duo 的多顯示屏與場景能力:從鉸鏈角度驅動即時互動、分屏與多窗口佈局,到利用場景配件讓內外螢幕協同工作。重點不只是加入新功能,而是依硬體狀態、版面條件與配件可用性,讓 App 隨時保持正確且自然的體驗。
本講重點
- UI Hinge Interaction 可提供鉸鏈的關閉、部分展開、完全展開等高層級狀態,也能持續更新鉸鏈角度。
- 連續的鉸鏈角度適合轉換成動態互動參數,例如空氣吉他 App 的彎音效果。
- iPhone Duo 的所有 App 都參與多任務處理,可支援兩個 App 分屏並排,也可將影片播放器與 App 堆疊顯示。
- 多窗口在 iPhone Duo 可用,但 iOS App 需於執行期間動態判斷功能是否可用,並處理建立新窗口失敗的情況。
- 場景配件可讓 App 在多塊顯示屏呈現內容;Camera Capture Accessory 則專為相機類 App 提供內外螢幕協同呈現。
- 演講排練 App 的範例顯示:內屏錄製排練影片時,外屏可同步顯示提詞器,並能依配件可用性更新控制項狀態。
iPhone DuoUI Hinge InteractionUnhinged ChangeInstrument ViewGuitar ViewSat ClassSync GeometryUI Windows SyncActivation Action場景配件Camera Capture AccessorySync AccessoryAvailability Change
概念整理:以鉸鏈狀態打造即時互動
UI Hinge Interaction 可讓 App 取得裝置鉸鏈的狀態。除了關閉、部分展開、完全展開等離散狀態外,API 也能提供鉸鏈角度的連續更新,因此可將實體開合動作轉為畫面、音效或其他即時互動。
0:09UI Hinge Interaction 提供關閉、部分展開與完全展開等鉸鏈高層級狀態,作為 App 判斷互動情境的基礎。「API還能夠提供鉸鏈角度的連續更新」
0:17空氣吉他 App 的構想:利用 iPhone Duo 的鉸鏈開合,如同電吉他的搖把一樣驅動彎音效果。- 空氣吉他範例中,Instrument View 的彎音參數會透過 Buddy 傳入 Guitar View。
- 在 Guitar View 加入 Unhinged Change 修飾服務後,可接收包含鉸鏈先後狀態上下文的參數;此例只需要目前的鉸鏈資訊。
- 先檢查 Hinge 是否非空。若 Hinge 為空,代表 App 正在沒有鉸鏈的設備上執行,不能假設角度資訊一定存在。
- 除了硬體可用性,也限定只在 iPhone Duo 處於半展開狀態時接受鉸鏈更新。
- 加入 iOS 分支,當 App 未讀取鉸鏈角度時,把彎音值重置為 0,避免保留不正確的效果值。
- 讀取連續角度後,計算彎音幅度並更新狀態,即可讓硬體開合動作直接影響演奏表現。
0:37Instrument View 與 Guitar View 的範例,說明彎音參數如何傳入吉他視圖,並準備由鉸鏈狀態更新。
1:42透過 Unhinged Change 讀取連續鉸鏈角度後,空氣吉他 App 可把開合動作轉換為彎音幅度,增加演奏表現力。「現在咱們空氣吉他這個APP,就擁有了全新緯度的表現力」
概念整理:多任務處理與可調整佈局
鉸鏈資料支援即時監聽,特別適合驅動動態互動與視覺特效;但在處理介面佈局時,應使用專門的排列和保留區域的 APP。iPhone Duo 的新硬體形態同時帶來多任務處理能力,因此 App 需要能因應不同分屏與堆疊版面。
2:04處理 iPhone Duo 版面時,鉸鏈資料可用於即時互動;介面配置則應使用專門的排列和保留區域工具處理。- 在 iPhone Duo 上,所有 App 都會參與多任務處理,兩個 App 可以並排顯示在分屏佈局中。
- 若 App 已在 iPad 或 iPhone鏡像支援窗口縮放,代表已具備適應不同版面的一個良好起點。
- iPhone Duo 另有影片播放器與 App 堆疊顯示的全新佈局;對 App 而言,處理分屏與堆疊這兩種佈局的方式完全一致。
- 可使用 Sat Class 和 Sync Geometry 進行佈局決策,讓介面隨可用空間與顯示方式調整。
2:59iPhone Duo 支援分屏與影片播放器和 App 堆疊顯示;可利用 Sat Class 與 Sync Geometry 為不同佈局做決策。概念整理:多窗口的可用性與例外處理
iPhone Duo 是首款支援 App 多窗口到 iPhone 的裝置。若 App 已在 iPad 支援多窗口,通常可直接在 iPhone Duo 執行;不過多窗口能力不是所有 iOS 裝置都具備,因此建立窗口前不能只依平台名稱做固定判斷。
3:28iPhone Duo 將 App 多窗口能力帶到 iPhone;已支援 iPad 多窗口的 App 可作為直接適配的起點。- iPad 上可隨時建立新窗口,但對 iOS App 而言,只有 iPhone Duo 支援多窗口能力。
- 應在執行期間動態判斷多窗口功能是否可用。
- App 請求新的 Sync 時,必須妥善處理異常,避免新窗口無法建立時造成操作中斷。
- 建議使用 UI Windows Sync 的 Activation Action;當無法建立新窗口時,它會自動隱藏。
- 首次為 App 加入多窗口支援時,可查閱官方技術文件。
3:48請求新窗口時應動態確認功能可用性並處理異常;UI Windows Sync 的 Activation Action 可在無法建立窗口時自動隱藏。概念整理:場景配件與多螢幕協作
場景配件讓 App 能同時在多塊顯示屏呈現內容。在 iPhone 與 iPad 上,App 可把附加內容和主介面搭配顯示,例如把 iPhone 作為外接顯示屏上遊戲的手柄。配件預設為開啟,但系統會依條件動態控制其可用性,且可隨時切換或更新。
- 使用觀察機制回應配件可用性的變更,才能讓 App 在系統條件改變時持續與系統狀態同步。
- 相機類 App 可使用全新的 Camera Capture Accessory:App 主介面維持在內屏時,外屏同步呈現附加 UI。
- 此能力適合拍照或錄影時,向被拍攝者展示附加內容。
- Camera Capture Accessory 在 App 於內屏全屏執行且擁有處於激活狀態的相機繪畫時可用。
- 應在相機 UI 所在的視圖上註冊這個配件。
4:38Camera Capture Accessory 讓相機類 App 維持內屏主介面時,能在外屏呈現附加 UI,協助向被拍攝者傳達內容。範例實作:錄影排練時在外屏顯示提詞器
演講排練 App 的情境是:使用者利用相機錄製排練影片,同時在 iPhone Duo 外屏顯示提詞器。這個範例示範如何把雙螢幕分工轉為實際工作流程:內屏負責相機錄製,外屏提供演講所需的文字輔助。
5:30演講排練 App 在內屏錄製排練影片,並規劃於外屏呈現提詞器,讓錄影與演講輔助可同時進行。- 使用 Sync Accessory 收視符新增 Camera Capture Accessory。
- 將配件加入相機視圖後,只要相機視圖可見,提詞器就會顯示。
- 講者指出,這些即為在 PUI 實作此功能的全部程式碼。
- 當相機視圖顯示於內屏時,外屏會同步呈現提詞器視圖。
6:09將 Camera Capture Accessory 加入相機視圖後,內屏顯示相機視圖時,外屏即可同步呈現提詞器視圖。- 為了能脫港排練,可在工具欄加入按鈕,隨時開啟或關閉提詞器。
- 按鈕更新提詞器模型的 Is Enable 狀態,再將此狀態傳入 Camera Capture Accessory。
- 當配件不可用時,例如設備處於閉合狀態,工具欄按鈕也應設為不可用。
- 在 Camera Capture Accessory 加上 Availability Change 修飾服,可即時監聽配件可用性變化並更新 UI。
6:40提詞器可透過工具欄按鈕控制 Is Enable 狀態;配件不可用時,按鈕也必須同步停用。「它可以充分發揮兩塊螢幕的協同優勢,並且在我們需要的時候,在外屏上呈現提詞器」
7:20完成後的排練 App 能依需求在外屏顯示提詞器,展現 iPhone Duo 兩塊螢幕協同工作的價值。重要提醒
- 讀取鉸鏈資料前先確認 Hinge 非空;這是支援沒有鉸鏈設備時不可省略的保護。
- 鉸鏈互動需限定正確裝置狀態。本例只在 iPhone Duo 半展開時接收更新,且未讀到角度時要將彎音歸零。
- 多窗口功能必須在執行期間檢查可用性,並處理請求新 Sync 時的異常。
- 場景配件雖預設開啟,仍可能因系統條件改變而不可用;控制項狀態要跟著 Availability Change 即時更新。
- Camera Capture Accessory 必須註冊於相機 UI 的視圖,且使用時需符合內屏全屏執行與激活相機繪畫等條件。
- 設計雙螢幕體驗時,應讓內外屏各自承擔明確角色,例如內屏進行錄影、外屏顯示提詞器,而非僅重複呈現相同內容。
課後複習
- 整理 UI Hinge Interaction 可取得的離散狀態與連續角度更新,並說明兩者各適合用於哪些互動。
- 依空氣吉他範例,練習設計 Hinge 非空檢查、半展開狀態限制,以及未讀取角度時將彎音值歸零的流程。
- 檢視既有 App 是否已支援窗口縮放或 iPad 多窗口,並思考如何以 Sat Class 和 Sync Geometry 處理分屏與堆疊佈局。
- 為新窗口請求設計執行期間的可用性判斷與異常處理,確認 UI Windows Sync 的 Activation Action 是否適用。
- 以演講排練情境為例,畫出內屏相機視圖、外屏提詞器、Is Enable 狀態與 Availability Change 回調之間的關係。
- 檢查場景配件不可用時,是否已將相關按鈕或控制項同步設為不可用,避免介面狀態與系統狀態不一致。