채널¶
채널 생성¶
새로운 대화 채널을 만들려면 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 채팅 소켓 서버 연결 상태를 감지하고 앱 사용자와 채널에서 발생하는 상태 변경 이벤트를 앱에 지속적으로 전달합니다. 자세한 이벤트 처리 방법은 이벤트 관리 > 채널 이벤트 문서를 참고하세요.