RevueSDK · Swift reference Guides

Instance Method

set(source:enabled:)

開關一條本地軌道(軌道層 mute):所有接收者一起受影響

@discardableResult func set(source: Track.Source, enabled: Bool) async throws -> [LocalTrackPublication]

Parameters

source

.camera / .microphone / .screenShareVideo

enabled

.camera:開、關硬體;其他:true = unmute 軌道、false = mute 軌道

Return Value

這條軌道目前的 publication(每位接收者一份;沒有發布則為空)

Discussion

只作用在軌道上(Track.isMuted),不改任何 publication 的 isMuted;兩層互不改寫, 接收者實際收到的是「軌道 mute,或他那份 publication mute」。要只對某一位停送, 改用那一份的 LocalTrackPublication.mute()。

sourceenabled = falseenabled = true
.camera與 setCamera(enabled: false) 相同:鏡頭硬體停止、每位接收者收到佔位畫面,不改 isMuted與 setCamera(enabled: true) 相同
.microphonemute 軌道:每位接收者收到全 0 的聲音,硬體不停unmute 軌道
.screenShareVideomute 軌道:每位接收者收到佔位畫面,不撤下發布unmute 軌道

.screenShareVideo 關閉只 mute、保留 publication,與 setScreenShare(enabled:) 一致; 要讓對方的格子消失,明確呼叫 unpublish(publication:)。

不負責 publish:房內有沒有人、軌道發布給誰都不影響軌道狀態;之後發布時,軌道若仍是 mute 狀態,對方直接收到佔位畫面或靜音。軌道 isMuted 翻轉時觸發一次 TrackDelegate.track(_:didUpdateIsMuted:);participant(_:trackPublication:didUpdateIsMuted:) 不會因此觸發。

.camera 只管硬體和出口,不觸發 didUpdateIsMuted;開不起來時只記 log、isCameraActive 改回 false, 不丟錯(和 setCamera(enabled:) 相同)。要阻斷鏡頭畫面但不動硬體,用 cameraTrack.mute()。

Throws

  • RoomMessageError.unsupportedSource — 收到不支援的 source(例如 .unknown)

  • 其他底層軌道 mute/unmute 錯誤