internal void OnUserOffline(AgoraRtcEngineKit engine, nuint uid, AgoraUserOfflineReason reason) { var id = (uint)uid; _knownStreams.Remove(id); var toClear = _containers.Where(a => a.StreamUID == id && a.IsStatic).ToList(); var toRemove = _containers.Where(a => a.StreamUID == id && !a.IsStatic).ToList(); foreach (var container in toRemove) { container.NativeView.RemoveFromSuperview(); _containers.Remove(container); } foreach (var container in toClear) { container.VideoView.IsOffline = true; container.VideoView.IsAudioMuted = false; container.VideoView.IsVideoMuted = false; container.VideoView.StreamUID = container.VideoView.StreamUID == AgoraService.UnknownLocalStreamId ? AgoraService.UnknownLocalStreamId : AgoraService.UnknownRemoteStreamId; } OnDisconnected(id); }
public void DidOfflineOfUid(AgoraRtcEngineKit engine, nuint uid, AgoraUserOfflineReason reason) { remoteVideo.Hidden = true; remoteVideoMutedIndicator.Hidden = false; }
public override void DidOfflineOfUid(AgoraRtcEngineKit engine, nuint uid, AgoraUserOfflineReason reason) { _controller.DidOfflineOfUid(engine, uid, reason); }
/// <summary> /// Dids the offline of uid. /// </summary> /// <param name="engine">Engine.</param> /// <param name="uid">Uid.</param> /// <param name="reason">Reason.</param> public override void DidOfflineOfUid(AgoraRtcEngineKit engine, nuint uid, AgoraUserOfflineReason reason) { Console.WriteLine($"DidOfflineOfUid: {uid}, {reason}"); _controller.OnUserOffline(engine, uid, reason); }