渠道¶
渠道创建¶
要创建一个新的对话频道,请创建一个 CreateChannelParams
对象,然后调用 Chat 类的 createChannel()
方法。
创建频道参数¶
字段名称 | 描述 | 类型 | 是否必填 |
---|---|---|---|
channelId | 渠道 ID (允许使用英文字母、数字和某些特殊字符 ( - , . , _ , ~ , : ),最多 100 个字符) | 字符串 | 是 |
password | 密码(仅对 PRIVATE 渠道必填)(最多 50 个字符) | 字符串 | 否 |
channelName | 渠道名称 (最多 50 个字符) | 字符串 | 是 |
maxMemberCount | 渠道参与者的最大数量 (最少 2,最多 5,000) | 整数 | 是 |
type | 渠道类型 (PRIVATE , PUBLIC , GROUP ) | 枚举 | 是 |
chatHistoryAllowed | 是否允许检索聊天记录 | 枚举 | 否 |
这是一个创建新对话频道的示例代码。
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 调用成功
}
}
})
#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()
方法。
输入通道参数¶
字段名称 | 描述 | 类型 | 必填 |
---|---|---|---|
channelId | 渠道 ID | 字符串 | 是 |
password | 密码(PRIVATE 渠道所需) | 字符串 | 否 |
这是一个进入对话频道的示例代码。
#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
),它将返回当前存在的所有频道的完整列表,而不进行过滤。
获取频道参数¶
字段名称 | 描述 | 类型 | 必需 |
---|---|---|---|
type | 渠道类型(PRIVATE 、PUBLIC 、GROUP ) | enum | Y |
channelId | 以特定频道ID检索频道 | string | N |
channelName | 检索包含特定频道名称的频道 | string | N |
sort | 渠道排序标准(ChannelId 、ChannelName 、RegTime ) | enum | N |
pageOrder | 排序方式(ASC 、DESC )(默认 DESC ) | string | N |
pageSize | 每页检索的频道数量 (最小10 ~ 最大100,默认10) | integer | N |
pageNumber | 要检索的页码 (从1开始,默认1) | integer | N |
Channel
对象和ChannelPage
对象作为响应提供,结构如下。
渠道¶
字段名称 | 描述 | 类型 |
---|---|---|
channelId | 渠道ID | 字符串 |
type | 渠道类型(PRIVATE 、PUBLIC 、GROUP ) | 枚举 |
owner | 渠道所有者的 Hive 玩家ID | 字符串 |
channelName | 渠道名称 | 字符串 |
memberCount | 当前参与成员的数量 | 整数 |
maxMemberCount | 渠道中参与者的最大数量 | 整数 |
regTime | 渠道创建日期和时间(基于 UTC+0 ,格式 yyyy-MM-dd'T'HH:mm:ss.SSSZ ) | 字符串 |
regTimeMillis | 渠道创建日期和时间(Unix 时间戳) | 长整型 |
chatHistoryAllowed | 是否允许检索渠道历史记录 | 布尔值 |
query | 检索渠道消息历史的方法 | 方法 |
渠道页面¶
字段名称 | 描述 | 类型 |
---|---|---|
size | 每页项目数量 | 整数 |
currentPage | 当前页码 | 整数 |
totalElements | 项目总数 | 整数 |
totalPages | 页数总数 | 整数 |
以下是一个示例代码,用于检索所有现有的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调用成功
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调用成功
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 调用成功
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调用成功
for (Chat::Channel *channel : channels) {
// Retrieve Channel
}
if (channelPage != null) {
// Retrieve ChannelPage
}
}
}];
渠道信息检索¶
要检索有关特定频道的详细信息,请调用Chat类的getChannelInfo()
方法。
响应包括Channel
对象和Member
对象,结构如下。
渠道¶
字段名称 | 描述 | 类型 |
---|---|---|
channelId | 渠道 ID | 字符串 |
type | 渠道类型 (PRIVATE , PUBLIC , GROUP ) | 枚举 |
owner | 渠道拥有者的 Hive PlayerID | 字符串 |
channelName | 渠道名称 | 字符串 |
memberCount | 当前参与成员的数量 | 整数 |
maxMemberCount | 渠道参与者的最大数量 | 整数 |
regTime | 渠道创建日期和时间(基于 UTC+0 ,格式 yyyy-MM-dd'T'HH:mm:ss.SSSZ ) | 字符串 |
regTimeMillis | 渠道创建日期和时间(Unix 时间戳) | 长整型 |
chatHistoryAllowed | 是否可以查询渠道历史 | 布尔值 |
query | 查询渠道消息历史的方法 | 方法 |
会员¶
字段名称 | 描述 | 类型 |
---|---|---|
playerId | Hive 玩家ID | long |
connectedTime | 连接时间(基于 UTC+0 ,格式 yyyy-MM-dd'T'HH:mm:ss.SSSZ ) | string |
connectedTimeeMillis | 连接时间(Unix 时间戳) | long |
以下是检索特定频道详细信息的示例代码。
#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
}
}
}));
渠道消息历史查询¶
调用channel.query(ChannelMessageListQueryParams, ChannelMessageListQueryListener)
方法以检索之前的聊天记录。
只有将属性 chatHistoryAllowed
设置为 true
的频道才能检索历史记录。
通道消息列表查询参数¶
字段名称 | 描述 | 类型 | 必需 |
---|---|---|---|
size | 接收消息的大小(最小1 ~ 最大50) | 整数 | 是 |
index | 额外查询所需的索引字符串。首次查询请留空 | 字符串 | 是 |
渠道消息列表查询监听器¶
字段名称 | 描述 | 类型 |
---|---|---|
hasNext | 一个标志,指示是否可以进行额外的查询 | long |
nextIndex | 进行额外查询所需的索引字符串 | string |
content | 检索到的 ChannelMessage 对象数组 | ChannelMessage |
using hive;
ChannelMessageListQueryParams queryParams = new ChannelMessageListQueryParams(10, "");
channel.query(queryParams, (ResultAPI result, ChannelMessageListQueryResponse response) => {
if (result.isSuccess() && response != null) {
foreach (ChannelMessage message in response.content) {
// channel message list
}
}
});
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
ChannelMessageListQueryParams queryParams;
params.size = 10;
params.queryIndex = "";
channel.query(queryParams, [=](ResultAPI const & result, ChannelMessageListQueryResponse const & response) {
if (result.isSuccess()) {
for (auto message : response.message) {
// channel message list
}
}
});
import com.hive.Chat;
import com.hive.ResultAPI;
val queryParams = Chat.ChannelMessageListQueryParams(size = 50)
channel.query(queryParams, object : Chat.ChannelMessageListQueryListener {
override fun onResult(
result: ResultAPI,
response: Chat.ChannelMessageListQueryResponse?
) {
if(result.isSuccess && response != null) {
response.content.forEach {
// channel message list
}
}
}
})
import com.hive.Chat;
Chat.ChannelMessageListQueryParams queryParams = new Chat.ChannelMessageListQueryParams(50);
channel.query(queryParams, (result, response) -> {
if (result.isSuccess() && response != null) {
for (HiveChatChannelMessage message : response.getContent()) {
// channel message list
}
}
});
#import "HIVEService.h"
HiveChatChannelMessageListQueryParams *queryParams = [[HiveChatChannelMessageListQueryParams alloc] initWithSize:10 index:@""];
[channel queryWithParams:queryParams listener:^(HIVEResultAPI * result, HiveChatChannelMessageListQueryResponse* response) {
if (result.isSuccess() && response.content) {
for (HiveChatChannelMessage *message in response.content) {
// channel message list
}
}
}];
渠道自动翻译接收设置¶
您可以设置是否接收来自此频道的消息的自动翻译。
翻译后的消息可以在接收到的ChannelMessage对象中查看。
渠道事件管理¶
Hive 聊天套接字服务器检测连接状态,并持续将应用用户与频道之间发生的状态变化事件传递给应用。有关详细的事件处理方法,请参阅 事件管理 > 频道事件 文档。