- RevueSDK
- LocalParticipant
Class
LocalParticipant
本地參與者(自己)— 發佈 Track、控制相機/麥克風/螢幕分享
class LocalParticipantOverview
透過 Room.shared.localParticipant 取得,隨 SDK 初始化就存在。 撥號不在這裡:邀請好友用 Revue.shared.friends.sendInvitation(friendId:message:), 對方接受後以 RemoteParticipant 出現在 Room.shared.remoteParticipants。
let local = Room.shared.localParticipant!
// 開硬體(不 publish)
local.setCamera(enabled: true)
local.setMicrophone(enabled: true)
// 發布給指定的人:每位接收者各發布一次,各得到一份 publication
let videoPub = try await local.publish(videoTrack: local.cameraTrack, to: participantA)
let audioPub = try await local.publish(audioTrack: local.microphoneTrack, to: participantA)
Topics
Instance Properties
var cameraTrack: LocalVideoTrack相機 Track(lazy — 首次存取時建立,跨通話 / 房間持久,SDK destroy 才隨 LocalParticipant 陪葬)。
var isCameraActive: Bool相機的開關狀態(不代表已 publish、不代表 isMuted 狀態)
var isMicrophoneActive: Bool麥克風的開關狀態(不代表已 publish、不代表 isMuted 狀態)
var isScreenSharing: Bool螢幕分享「是否進行中」狀態 — 統一 In-app / Broadcast 兩模式的對上層訊號。
var isScreenSharingPublisher: AnyPublisher<Bool, Never>[isScreenSharing] 的變化流(CurrentValueSubject → 訂閱當下補發現值)。 對稱
BroadcastManager.isBroadcastingPublisher,但語意為「首幀為準」(見上)。var localAudioTracks: [LocalTrackPublication]已發布的本地音訊 publication,規則同
localVideoTracksvar localVideoTracks: [LocalTrackPublication]每位接收者各一份:同一條鏡頭軌道發布給 A、B,會得到 2 個 publication, 接收者分別是 A 與 B。螢幕分享也算視訊。未發布的軌道不在其中。
var microphoneTrack: LocalAudioTrack麥克風 Track(lazy — 同 cameraTrack 語意;建立僅接上 MicrophoneCapturer.shared 對外殼 + 一條訂閱,不碰 AVAudioSession / AudioEngine、不觸發麥克風權限)。
var screenShareTrack: LocalVideoTrack螢幕分享 Track(lazy — 同 cameraTrack 語意)
Instance Methods
func audioPublication(to: String) -> LocalTrackPublication?查詢是否已對指定參與者發佈音訊 Track
func publish(audioTrack: LocalAudioTrack, to: RemoteParticipant, options: AudioPublishOptions?) async throws -> LocalTrackPublication發佈音訊 Track 到指定參與者
func publish(message: String, to: RemoteParticipant, timeout: TimeInterval) async throws -> UInt32發送訊息給指定參與者(Room 層訊息管道)
func publish(videoTrack: LocalVideoTrack, to: RemoteParticipant, options: VideoPublishOptions?) async throws -> LocalTrackPublication發佈視訊 Track 到指定參與者
func publishCamera(to: RemoteParticipant, options: VideoPublishOptions?) async throws -> LocalTrackPublication發佈相機給指定參與者(track 隨取隨有,上層不需要先呼叫 setCamera)
func publishMicrophone(to: RemoteParticipant, options: AudioPublishOptions?) async throws -> LocalTrackPublication發佈麥克風給指定參與者(track 隨取隨有,上層不需要先呼叫 setMicrophone)
func set(name: String) -> Bool設定自身名稱(Room 層 alias,底層走朋友層 toxcore broadcast)
func set(source: Track.Source, enabled: Bool) async throws -> [LocalTrackPublication]開關一條本地軌道(軌道層 mute):所有接收者一起受影響
func set(status: UserStatus) -> Bool設定自身使用者狀態(Room 層 alias)
func set(statusMessage: String) -> Bool設定自身狀態訊息(Room 層 alias)
func setCamera(enabled: Bool, options: CameraCaptureOptions?) -> LocalVideoTrack?啟用/停用相機硬體擷取(不 publish、不改
isMuted)func setMicrophone(enabled: Bool) -> LocalAudioTrack?啟用/停用麥克風硬體擷取(不 publish、不改
isMuted)func setScreenShare(enabled: Bool) async throws -> LocalVideoTrack?啟用/停用螢幕分享硬體擷取(iOS)— 純設備控制,不 publish
func unpublish(publication: LocalTrackPublication)取消發佈 Track
func unpublishAll()取消發佈所有 Track
func videoPublication(source: Track.Source, to: String) -> LocalTrackPublication?查詢是否已對指定參與者發佈視訊 Track