public void SendChannel(string channel, AgoraRtmMessage message)
        {
            var rtmChannels = AgoraRtm.RtmKit.Channels;

            if (rtmChannels[channel] is AgoraRtmChannel rtmChannel)
            {
                var options = new AgoraRtmSendMessageOptions
                {
                    EnableOfflineMessaging = AgoraRtm.OneToOneMessageType == OneToOneMessageType.Offline
                };

                rtmChannel.SendMessage(message, options, (state) =>
                {
                    Console.Write($"send channel msg state: {state}");

                    var current = AgoraRtm.Current;
                    if (current == null)
                    {
                        return;
                    }

                    AppendMsg(current, message);
                });
            }
        }
        private void OmMessageReceived(string peerId, AgoraRtmMessage message)
        {
            var text   = message.Text;
            var signal = JsonConvert.DeserializeObject <SignalMessage>(text);

            OnSignalReceived?.Invoke(signal);
        }
        public void SendPeerMessage(string peerId, string text)
        {
            var rtmMessage = new AgoraRtmMessage(text);

            _rtmKit.SendMessage(rtmMessage, peerId, (state) =>
            {
                Console.WriteLine($"RTM send peer msg state: {state}");
                OnSendMessage?.Invoke(state == AgoraRtmSendPeerMessageErrorCode.Ok);
            });
        }
        public void SendChannelMessage(string text)
        {
            var rtmMessage = new AgoraRtmMessage(text);

            _rtmChannel.SendMessage(rtmMessage, (state) =>
            {
                Console.WriteLine($"RTM send channel msg state: {state}");
                OnSendMessage?.Invoke(state == AgoraRtmSendChannelMessageErrorCode.Ok);
            });
        }
Пример #5
0
        public void SendPeer(string peer, string msg)
        {
            var message = new AgoraRtmMessage(msg);

            AgoraRtm.RtmKit.SendMessage(message, peer, (state) =>
            {
                Console.WriteLine($"send peer msg state: ({state})");

                var current = AgoraRtm.Current;
                AppendMsg(current, msg);
            });
        }
        public void AppendMsg(string user, AgoraRtmMessage message)
        {
            var msg = new Message(user, message);

            _messages.Add(msg);

            var end = _messages.Count - 1;

            InvokeOnMainThread(() =>
            {
                Table.ReloadData();
                Table.ScrollColumnToVisible(end);
            });
        }
Пример #7
0
        public static void AddOfflineMessage(AgoraRtmMessage offlineMessage, string user)
        {
            if (offlineMessage == null || !offlineMessage.IsOfflineMessage)
            {
                return;
            }

            if (!_offlineMessages.TryGetValue(user, out List <AgoraRtmMessage> userMessages))
            {
                userMessages = new List <AgoraRtmMessage>();
            }
            userMessages.Add(offlineMessage);
            _offlineMessages[user] = userMessages;
        }
        public void AppendMsg(string user, AgoraRtmMessage message)
        {
            var msg = new Message(user, message);

            _list.Add(msg);

            var end = NSIndexPath.FromRowSection(_list.Count - 1, 0);

            InvokeOnMainThread(() =>
            {
                TableView.ReloadData();
                TableView.ScrollToRow(end, UITableViewScrollPosition.Bottom, true);
            });
        }
        public void SendPeer(string peer, AgoraRtmMessage message)
        {
            var options = new AgoraRtmSendMessageOptions
            {
                EnableOfflineMessaging = AgoraRtm.OneToOneMessageType == OneToOneMessageType.Offline
            };

            AgoraRtm.RtmKit.SendMessage(message, peer, options, (state) =>
            {
                Console.WriteLine($"send peer msg state: ({state})");

                var current = AgoraRtm.Current;
                AppendMsg(current, message);
            });
        }
        public static void AddOfflineMessage(AgoraRtmMessage message, string user)
        {
            if (!message.IsOfflineMessage)
            {
                return;
            }

            var messages = new List <AgoraRtmMessage>();

            if (_offlineMessages.ContainsKey(user))
            {
                messages = _offlineMessages[user];
            }
            messages.Add(message);
            _offlineMessages[user] = messages;
        }
        private bool PressedReturnToSendText(string name, string text)
        {
            if (string.IsNullOrEmpty(text))
            {
                return(false);
            }

            var message = new AgoraRtmMessage(text);

            switch (ChatType)
            {
            case ChatType.Peer:
                SendPeer(name, message);
                break;

            case ChatType.Group:
                SendChannel(name, message);
                break;
            }

            return(true);
        }
Пример #12
0
        public void SendChannel(string channel, string msg)
        {
            var rtmChannels = AgoraRtm.RtmKit.Channels;

            if ((rtmChannels[channel] is AgoraRtmChannel rtmChannel))
            {
                var message = new AgoraRtmMessage(msg);

                rtmChannel.SendMessage(message, (state) =>
                {
                    Console.Write($"send channel msg state: {state}");

                    var current = AgoraRtm.Current;
                    if (current == null)
                    {
                        return;
                    }

                    AppendMsg(current, msg);
                });
            }
        }
Пример #13
0
 public override void MessageReceived(AgoraRtmKit kit, AgoraRtmMessage message, string peerId)
 {
     AppendMessage(peerId, message);
 }
 public override void MessageReceived(AgoraRtmChannel channel, AgoraRtmMessage message, AgoraRtmMember member)
 {
     InvokeOnMainThread(() => OnMessageReceived(member.UserId, message));
 }
 public Message(string userId, AgoraRtmMessage rtmMessage)
 {
     UserId     = userId;
     RtmMessage = rtmMessage;
 }