- RevueSDK
- Room
Class
Room
會議室 — 管理參與者、Track 發佈/訂閱的核心物件(singleton)
class RoomOverview
RevueSDK 是直連架構,ToxCore 同時只支援一個群組通話 session, 且相機/麥克風只有一個,因此 Room 設計為 singleton。 localParticipant 隨 SDK 初始化就存在,不需要額外 join。
邀請與接聽在 Revue.shared.friends(FriendManager)上,結果由 RevueDelegate 回報:
sendInvitation(friendId:message:)— 邀請好友acceptInvitation(friendId:)/rejectInvitation(friendId:)— 接受 / 拒絕收到的邀請
對方接通後以 RemoteParticipant 加入 remoteParticipants,並 fire RoomDelegate.participantDidConnect。斷線操作:
remoteParticipant.disconnect()— 斷開與此人的連線disconnectAll()— 斷開所有遠端參與者(Room 本身不消失)
使用方式:
// 每次 Revue.shared.initialize() 之後註冊(destroy() 會清空 delegates)
Room.shared.delegates.add(delegate: self)
// 邀請好友;對方接受後 fire participantDidConnect
try Revue.shared.friends.sendInvitation(friendId: "alice")
// 收到邀請(在 RevueDelegate.didReceiveInvitation 中)
try Revue.shared.friends.acceptInvitation(friendId: "bob")
// 斷開特定人
Room.shared.remoteParticipants["bob"]?.disconnect()
// 斷開所有遠端參與者(Room 本身不消失)
Room.shared.disconnectAll()
Topics
Instance Properties
var activeSpeakers: [Participant]正在說話的參與者列表(依音量由大到小,含本地自己)
var allParticipants: [Participant]所有參與者(含自己)
let delegates: MulticastDelegate<any RoomDelegate>多播代理
var isSpeakerMuted: BoolSpeaker 靜音
var localParticipant: LocalParticipant!本地參與者(自己)— 隨 SDK 初始化就存在
var participantCount: Int參與者總數(含自己)
var publishersCount: Int正在發佈 Track 的參與者數量
var remoteParticipants: [String : RemoteParticipant]遠端參與者字典 [friendId: RemoteParticipant]
var reportStatistics: Bool診斷時打開,執行期可切、不用重啟。
var roomOutputTrack: LocalAudioTrack?所有遠端音訊的混音結果(外部開發者可透過 renderer 訂閱)
Instance Methods
func disconnectAll()斷開所有遠端參與者(Room 本身不消失)
Type Properties
static let shared: Room全域唯一實例