- RevueSDK
- LocalParticipant
- set(source:enabled:)
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()。
| source | enabled = false | enabled = true |
|---|---|---|
.camera | 與 setCamera(enabled: false) 相同:鏡頭硬體停止、每位接收者收到佔位畫面,不改 isMuted | 與 setCamera(enabled: true) 相同 |
.microphone | mute 軌道:每位接收者收到全 0 的聲音,硬體不停 | unmute 軌道 |
.screenShareVideo | mute 軌道:每位接收者收到佔位畫面,不撤下發布 | 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 錯誤