- RevueSDK
- RoomDelegate
- room(_:participant:didUpdatePaths:)
Instance Method
room(_:participant:didUpdatePaths:)
參與者連線路徑變更(FriendConnectionPaths bitmap)
func room(_ room: Room, participant: RemoteParticipant, didUpdatePaths paths: FriendConnectionPaths)Discussion
對齊 RevueDelegate.didUpdatePaths(雙 fire)。含空 bitmap(v0.17.0 起)。
⚠️ 收到空 bitmap 時不可移除 participant
revuekit-c 0.17.0 契約(docs/contract/av_call.md @invariant 3): bitmap 歸零不蘊含 session 已結束。空窗期間 C 層持續嘗試重連 —— 網路恢復則 paths 自動回報有連線、通話自動恢復。
上層應:
✅ 顯示「連線中斷」之類的暫時狀態
✅ 保持掛斷入口可用(
participant.disconnect()無連線前置條件,隨時可呼叫)❌ 不得移除 participant / 結束通話 UI —— 那會讓使用者失去掛斷入口, 只能重啟 App(違反契約約定 2、3)
真正的結束一律由 participantDidDisconnect 宣告。
func room(_ room: Room, participant: RemoteParticipant,
didUpdatePaths paths: FriendConnectionPaths) {
if paths.isEmpty {
showReconnectingBadge(for: participant) // 保留 participant
} else if paths.contains(.udpDirect) {
/* 走 UDP 直連 */
}
}