기술 자료

지원

Vivox Unity SDK

Vivox Unity SDK

채널 메시지

Send, receive and manage text messages in Vivox channels.
읽는 시간 1분최근 업데이트: 19일 전

VivoxMessage는 TextOnly 또는 TextAndAudio의 ChatCapability를 사용하여 텍스트가 활성화된 특정 Vivox 채널로 보낼 수 있습니다.

채널 메시지 보내기

VivoxService.Instance.SendChannelTextMessageAsync(string channelName, string message)
를 사용하여 채널에 메시지를 보낼 수 있으며,
channelName
은 메시지의 대상 채널이고
message
는 보낼 메시지입니다.
다음 코드 스니핏은 설정된 로비 채널에 메시지를 보내고 MessageInputField InputField 오브젝트에서 텍스트를 가져오는 구현 예제입니다.
public async void SendMessageAsync(){ if (string.IsNullOrEmpty(MessageInputField.text)) { return; } VivoxService.Instance.SendChannelTextMessageAsync(LobbyChannelName, MessageInputField.text); MessageInputField.text = string.Empty;}

채널 메시지 받기

텍스트가 활성화된 채널에서 메시지를 수신하려면
VivoxService.Instance.ChannelMessageReceived
액션을 구독해야 합니다.
채널로 전송된 VivoxMessage는 다이렉트 메시지와 거의 동일하며,
VivoxMessage.ChannelName
에 ChannelName이 추가되고
VivoxMessage.FromSelf
필드는 메시지가 현재 로그인한 사용자의 메시지인지 여부에 따라 설정됩니다.
다음 코드 스니핏은 수신 시 VivoxMessage에서 사용 가능한 모든 정보를 가져오는 예제와 함께 액션을 구독하는 예제 라인입니다.
//Subscribe to this event at some point in the Vivox initialization process,//preferably before joining any channels.. . .VivoxService.Instance.ChannelMessageReceived += OnChannelMessageReceived;. . .void OnChannelMessageReceived(VivoxMessage message){ var channelName = message.ChannelName; var senderName = message.SenderDisplayName; var senderId = message.SenderPlayerId; var messageText = message.MessageText; var timeReceived = message.ReceivedTime; var language = message.Language; var fromSelf = message.FromSelf; var messageId = message.MessageId;}

채널 텍스트 메시지 이력

Vivox를 통해 사용자는
VivoxService.Instance.GetChannelTextMessageHistoryAsync(string channelName, int requestSize = 10, ChatHistoryQueryOptions chatHistoryQueryOptions = null)
를 사용하여 채널의 텍스트 활동 이력에 액세스할 수 있습니다. 여기서
channelName
은 이력을 요청할 채널의 이름이고,
requestSize
는 최대 반환할 메시지 수(기본값은 10)이며,
chatHistoryQueryOptions
는 메시지에 포함된 단어나 문구, 메시지의 특정 PlayerId 발송자를 지정하거나 전후에 쿼리할 시간을 지정하는 등의 작업을 수행할 수 있는 선택적 파라미터입니다.
ChatHistoryQueryOption
에 대한 보다 구체적인 정보는 채팅 이력 쿼리 옵션에서 확인할 수 있습니다.
IReadOnlyCollection
에서 반환된 메시지는 최신 메시지부터 오래된 메시지 순서대로 나열됩니다.
다음 코드 스니핏은 LobbyChannelName 컬렉션에서 가장 최근 메시지 25개를 가져온 다음 선택 사항인 ChatHistoryQueryOptions를 사용하지 않고 발송자의 표시 이름과 메시지를 가장 오래된 항목부터 가장 최신 항목 순서대로 기록하는 예입니다.
public async void FetchHistoryAsync(){ var historyMessages = await VivoxService.Instance.GetChannelTextMessageHistoryAsync(LobbyChannelName, 10); //Reversing the messages so they display from oldest to newest var reversedMessages = historyMessages.Reverse(); foreach(VivoxMessage message in reversedMessages) { Debug.Log($"{message.SenderDisplayName}: {message.MessageText}"); }}

채널 메시지 편집

Vivox를 통해 사용자는
VivoxService.Instance.EditChannelTextMessageAsync(string channelName, string messageId, string newMessage)
를 사용하여 채널에 보낸 메시지의 텍스트를 편집할 수 있습니다. 여기서 channelName은 메시지가 전송된 채널의 이름이고, messageId는 변경할 메시지의 ID이며, newMessage는 메시지의 업데이트된 텍스트입니다.
채널의 모든 사용자가 메시지를 편집하면 채널의 모든 사용자는 업데이트된 MessageText와 함께 편집된 VivoxMessage가 포함된
VivoxService.Instance.ChannelMessageEdited
액션을 수신하게 됩니다.
public async void UpdateChannelMessageAsync(VivoxMessage messageToUpdate, string updatedMessageText){ await VivoxService.Instance.EditChannelTextMessageAsync(messageToUpdate.ChannelName, messageToUpdate.MessageId, updatedMessageText);}

채널 메시지 삭제

Vivox를 통해 사용자는
VivoxService.Instance.DeleteChannelTextMessageAsync(string channelName, string messageId)
를 사용하여 채널에 보낸 메시지의 텍스트를 삭제할 수 있습니다. 여기서 channelName은 메시지가 전송된 채널의 이름이고, messageId는 삭제할 메시지의 ID입니다.
채널의 모든 사용자가 메시지를 삭제하면 채널의 모든 사용자는 삭제된 VivoxMessage가 포함된
VivoxService.Instance.ChannelMessageDeleted
액션을 수신하게 됩니다.
public async void DeleteChannelMessageAsync(VivoxMessage messageToDelete){ await VivoxService.Instance.DeleteChannelTextMessageAsync(messageToDelete.ChannelName, messageToDelete.MessageId)}