RevueSDK · Swift reference Guides

Instance Method

setScreenShare(enabled:)

啟用/停用螢幕分享硬體擷取(iOS)— 純設備控制,不 publish

@discardableResult func setScreenShare(enabled: Bool) async throws -> LocalVideoTrack?

Parameters

enabled

true = 開硬體擷取, false = 關硬體擷取

Return Value

螢幕分享 LocalVideoTrack(後續可透過 publish(videoTrack:to:options:) 發布給 指定對象)。只要 enabled=true 被呼叫,track 就一定建好並回傳(track / 硬體 / publish 三者獨立)—— 回傳非 nil 不代表「已在擷取」:Broadcast 第一階段回傳的 track 其 capturer 尚未 startCapture(等使用者按開始 → 第二階段自動啟動)。實際「擷取中」 狀態改由 isScreenSharing / isScreenSharingPublisher 判斷。型別保留 optional 僅 為 macOS 未實作等防禦路徑。

Discussion

與 setCamera / setMicrophone 同一家族 —— 純硬體開關、回 track、 publish 分開。上層要送給誰,自行呼 publish(videoTrack:to:)。

原本 setScreenShare(true) 會偷偷對 Room 全員 publish,兩個問題:P2P 下追不上動態成員 (發完後才加入的人漏發),且會撞 publish 的單流名額 guard(該好友已有 video publish → throw)。

依 ScreenShareCaptureOptions.defaultToBroadcastExtension 自動偵測: 配了 Broadcast Extension → Broadcast 模式(可分享任何 App);否則 In-app 模式(只截 App 內)。

Note

保留 async throws —— ReplayKit(RPScreenRecorder.startCapture)啟動需 await 且可能拋權限錯,與 setCamera 的 AVCaptureSession 不同。