示例#1
0
        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);
 }
示例#4
0
 /// <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);
 }