채널¶
채널 생성¶
새로운 대화 채널을 만들려면 CreateChannelParams
객체를 생성 후 Chat 클래스 createChannel()
메서드를 호출합니다.
CreateChannelParams¶
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
channelId | 채널 ID (영어 대소문자, 숫자, 일부 특수문자( - , . , _ , ~ , : ) 사용 가능, 최대 100자) | string | Y |
password | 비밀번호 (PRIVATE 채널인 경우만 필수 필드)(최대 50자) | string | N |
channelName | 채널 이름 (최대 50자) | string | Y |
maxMemberCount | 최대 채널 참여 인원 (최소 2명 ~ 최대 5,000명) | integer | Y |
type | 채널 타입 (PRIVATE , PUBLIC , GROUP ) | enum | Y |
다음은 새로운 대화 채널을 생성하는 예제 코드입니다.
using hive;
CreateChannelParams createChannelParams = new CreateChannelParams();
createChannelParams.channelId = "CHANNEL_ID";
createChannelParams.password = "";
createChannelParams.channelName = "CHANNEL_NAME";
createChannelParams.maxMemberCount = 8;
createChannelParams.type = ChannelType.PUBLIC;
Chat.createChannel(createChannelParams, (ResultAPI result) => {
if (result.isSuccess()) {
// API Call Success
}
});
#include "HiveChat.h"
FHiveCreateChannelParams CreateChannelParams = FHiveCreateChannelParams();
CreateChannelParams.ChannelId = TEXT("CHANNEL_ID");
CreateChannelParams.Password = TEXT("");
CreateChannelParams.ChannelName = TEXT("CHANNEL_NAME");
CreateChannelParams.MaxMemberCount = 8;
CreateChannelParams.Type = EHiveChannelType::Public;
FHiveChat::CreateChannel(CreateChannelParams, FHiveChatOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// API Call Success
}
});
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
CreateChannelParams param;
param.channelId = "CHANNEL_ID";
param.channelName = "CHANNEL_NAME";
param.password = "";
param.maxMemberCount = 8;
param.type = ChannelType::PUBLIC;
Chat::createChannel(param, [=](ResultAPI const & result) {
if (result.isSuccess()) {
// API Call Success
}
});
import com.hive.Chat;
import com.hive.ResultAPI;
val params = Chat.CreateChannelParams(
channelId = "CHANNEL_ID",
password = "",
channelName = "CHANNEL_NAME",
maxMemberCount = 8,
type = Chat.ChannelType.PUBLIC
)
Chat.createChannel(params, object: Chat.CreateChannelListener{
override fun onResult(result: ResultAPI) {
if (result.isSuccess) {
// API Call Success
}
}
})
#import "HIVEService.h"
HiveChatCreateChannelParams* params = [[HiveChatCreateChannelParams alloc] init];
params.channelId = @"CHANNEL_ID";
params.password = @"";
params.channelName = @"CHANNEL_NAME";
params.maxMemberCount = 8;
params.type = Chat::ChannelType::PUBLIC;
[HiveChat createChannelWithCreateParams:params handler:^(HIVEResultAPI * result) {
if (result.isSuccess) {
// API Call Success
}
}];
채널 삭제¶
기존 대화 채널을 삭제하려면 Chat 클래스 deleteChannel()
메서드를 호출합니다.
다음은 대화 채널을 삭제하는 예제 코드입니다.
채널 입장¶
기존 대화 채널에 입장하려면 EnterChannelParams
객체를 생성한 후 Chat 클래스 enterChannel()
메서드를 호출합니다.
EnterChannelParams¶
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
channelId | 채널 ID | string | Y |
password | 비밀번호 (PRIVATE 채널일 경우 필수) | string | N |
다음은 대화 채널에 입장하는 예제 코드입니다.
#include "HiveChat.h"
FHiveEnterChannelParams EnterChannelParams = FHiveEnterChannelParams();
EnterChannelParams.ChannelId = TEXT("CHANNEL_ID");
EnterChannelParams.Password = TEXT("");
FHiveChat::EnterChannel(EnterChannelParams, FHiveChatOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
if (Result.IsSuccess()) {
// API Call Success
}
}));
채널 퇴장¶
참여한 대화 채널에서 퇴장하려면 Chat 클래스 exitChannel()
메서드를 호출합니다.
다음은 참여한 대화 채널에서 퇴장하는 예제 코드입니다.
전체 채널 목록 조회¶
현재 존재하는 전체 채널 목록을 조회하려면 GetChannelsParams
객체를 생성한 후 Chat 클래스 getChannels()
메서드를 호출합니다.
Note
GetChannelsParams
객체를 전달하지 않을 시(객체를 전달하지 않으면 null
을 전달함), 현재 존재하는 전체 채널 목록을 필터링 없이 반환합니다.
GetChannelsParams¶
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
type | 채널 타입 (PRIVATE , PUBLIC , GROUP ) | enum | Y |
channelId | 특정 채널 ID로 시작하는 채널 조회 | string | N |
channelName | 특정 채널 이름을 포함하는 채널 조회 | string | N |
pageOrder | 정렬 방식 (ASC , DESC )(기본값 DESC ) | string | N |
pageSize | 한 페이지당 조회할 채널 수 (최소 10개 ~ 최대 100개, 기본값 10) | integer | N |
pageNumber | 조회할 페이지 번호 (1부터 시작, 기본값 1) | integer | N |
응답으로 Channel
객체와 ChannelPage
객체를 전달하며, 구조는 다음과 같습니다.
Channel¶
필드명 | 설명 | 타입 |
---|---|---|
channelId | 채널 ID | string |
type | 채널 타입 (PRIVATE , PUBLIC , GROUP ) | enum |
owner | 채널 소유자의 Hive PlayerID | string |
channelName | 채널 이름 | string |
maxMemberCount | 최대 채널 참여 인원 | integer |
regTime | 채널 생성 일시 (UTC+0 기준, yyyy-MM-dd'T'HH:mm:ss.SSSZ 형식) | string |
ChannelPage¶
필드명 | 설명 | 타입 |
---|---|---|
size | 한 페이지당 항목 수 | integer |
currentPage | 현재 페이지 번호 | integer |
totalElements | 전체 항목 수 | integer |
totalPages | 전체 페이지 수 | integer |
다음은 현재 존재하는 PUBLIC
타입 전체 채널 목록을 조회하는 예제 코드입니다.
using hive;
GetChannelsParams getChannelsParams = new GetChannelsParams();
getChannelsParams.type = ChannelType.PUBLIC;
Chat.getChannels(getChannelsParams, (ResultAPI result, List<Channel> channels, ChannelPage channelPage) => {
if (result.isSuccess()) {
// API Call Success
foreach (Channel channel in channels) {
// Retrieve Channel
}
if (channelPage != null) {
// Retrieve ChannelPage
}
}
});
#include "HiveChat.h"
TOptional<FHiveGetChannelsParams> GetChannelsParams = FHiveGetChannelsParams();
GetChannelsParams->Type = EHiveChannelType::Public;
FHiveChat::GetChannels(GetChannelsParams, FHiveChatOnGetChannelsDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveChannel>& channels, FHiveChannelPage const & channelPage) {
if (Result.IsSuccess()) {
// API Call Success
for (const FHiveChannel& Channel : Channels) {
// Retrieve Channel
}
if (ChannelPage != nullptr) {
// Retrieve ChannelPage
}
}
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
Chat::GetChannelsParams params = Chat::GetChannelsParams();
params.type = Chat::ChannelType::PUBLIC;
Chat::getChannels(param, [=](ResultAPI const & result, std::vector<Channel> const & channels, ChannelPage const & pageInfo) {
if (result.isSuccess()) {
// API Call Success
for (Chat::Channel channel : channels) {
// Retrieve Channel
}
if (channelPage != null) {
// Retrieve ChannelPage
}
}
});
import com.hive.Chat;
import com.hive.ResultAPI;
val params = Chat.GetChannelsParams(type = Chat.ChannelType.PUBLIC)
Chat.getChannels(params, object: Chat.GetChannelsListener{
override fun onResult(
result: ResultAPI,
channels: ArrayList<Chat.Channel>,
channelPage: Chat.ChannelPage?
) {
if (result.isSuccess) {
// API Call Success
channels.forEach {
// Retrieve Channel
}
channelPage?.let {
// Retrieve ChannelPage
}
}
}
})
import com.hive.Chat;
Chat.GetChannelsParams params = new Chat.GetChannelsParams(Chat.ChannelType.PUBLIC, null, null, null, null, null);
Chat.getChannels(params, (result, channels, channelPage) -> {
if (result.isSuccess()) {
// API Call Success
for (Chat.Channel channel : channels) {
// Retrieve Channel
}
if (channelPage != null) {
// Retrieve ChannelPage
}
}
});
import HIVEService
let params = HiveChatParams.GetChannelsParams(type: .public, null, null, null, null, null)
ChatInterface.getChannels(getChannelsParams: params) { result, channels, pageInfo in
if result.isSuccess {
channels.forEach {
// Retrieve Channel
}
channelPage?.let {
// Retrieve ChannelPage
}
}
}
#import "HIVEService.h"
HiveChatGetChannelsParams* params = [[HiveChatGetChannelsParams alloc] init];
params.type = Chat::ChannelType::PUBLIC;
[HiveChat getChannelsWithGetChannelsParams:params handler:^(HIVEResultAPI * result, NSArray<HiveChatChannelContent *> * channels, HiveChatPageInfo * pageInfo) {
if (result.isSuccess) {
// API Call Success
for (Chat::Channel *channel : channels) {
// Retrieve Channel
}
if (channelPage != null) {
// Retrieve ChannelPage
}
}
}];
채널 정보 조회¶
특정 채널의 상세 정보를 조회하려면 Chat 클래스 getChannelInfo()
메서드를 호출합니다.
응답으로 Channel
객체와 Member
객체를 전달하며, 구조는 다음과 같습니다.
Channel¶
필드명 | 설명 | 타입 |
---|---|---|
channelId | 채널 ID | string |
type | 채널 타입 (PRIVATE , PUBLIC , GROUP ) | enum |
owner | 채널 소유자의 Hive PlayerID | string |
channelName | 채널 이름 | string |
maxMemberCount | 최대 채널 참여 인원 | integer |
regTime | 채널 생성 일시 (UTC+0 기준, yyyy-MM-dd'T'HH:mm:ss.SSSZ 형식) | string |
Member¶
필드명 | 설명 | 타입 |
---|---|---|
playerId | Hive PlayerID | long |
extraData | 추가 데이터 (UTF-8 기준)(최대 256 Byte) | string |
connectedTime | 접속 일시 (UTC+0 기준, yyyy-MM-dd'T'HH:mm:ss.SSSZ 형식) | string |
다음은 특정 채널의 상세 정보를 조회하는 예제 코드입니다.
#include "HiveChat.h"
FString ChannelId = TEXT("CHANNEL_ID");
FHiveChat::GetChannelInfo(ChannelId, FHiveChatOnGetChannelInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveChannel& channel, const TArray<FHiveMember>& members) {
if (Result.IsSuccess()) {
// API Call Success
if (channel != nullptr) {
// Retrieve Channel
}
for (const FHiveMember& Member : Members) {
// Retrieve Member
}
}
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
std::string channelId = "CHANNEL_ID";
Chat::getChannelInfo(channelId, [=](ResultAPI const & result, Channel const & channel, std::vector<Member> const & members) {
if (result.isSuccess()) {
if (channel != null) {
// Retrieve Channel
}
for (Chat::Member member : members) {
// Retrieve Member
}
}
});
import com.hive.Chat;
import com.hive.ResultAPI;
val channelId = "CHANNEL_ID"
Chat.getChannelInfo(channelId, object: Chat.GetChannelInfoListener {
override fun onResult(
result: ResultAPI,
channel: Chat.Channel?,
members: ArrayList<Chat.Member>
) {
if (result.isSuccess) {
channel?.let {
// Retrieve Channel
}
members.forEach {
// Retrieve Member
}
}
}
})
#import "HIVEService.h"
NSString *channelId = @"CHANNEL_ID";
[HiveChat getChannelInfoWithChannelId:channelId handler:^(HIVEResultAPI * result, HiveChatChannelContent * channel, NSArray<HiveChatMember *> * members) {
if (result.isSuccess) {
if (channel != null) {
// Retrieve Channel
}
for (Chat::Member *member : members) {
// Retrieve Member
}
}
}];
채널 참여 멤버 조회¶
채널 참여 멤버를 조회하려면 Chat 클래스 getChannelMembers()
메서드를 호출합니다.
Note
응답값은 getChannelInfo()
에서 전달하는 Member
객체와 동일합니다.
#include "HiveChat.h"
FString ChannelId = TEXT("CHANNEL_ID");
FHiveChat::GetChannelMembers(ChannelId, FHiveChatOnGetChannelMembersDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveMember>& members) {
if (Result.IsSuccess()) {
for (const FHiveMember& Member : members) {
// Retrieve Member
}
}
}));
채널 이벤트 관리¶
Hive 채팅 소켓 서버 연결 상태를 감지하고 앱 사용자와 채널에서 발생하는 상태 변경 이벤트를 앱에 지속적으로 전달합니다. 자세한 이벤트 처리 방법은 이벤트 관리 > 채널 이벤트 문서를 참고하세요.