事件管理¶
Hive 聊天功能向應用客戶端傳送三種類型的事件。
- 連接事件
- 頻道事件
- 1:1 訊息事件
您可以通过使用自定义键注册事件监听器来接收事件。
連接事件¶
連接事件是與 Hive 聊天插座伺服器連接相關的事件。
連接事件類型¶
事件名稱 | 發生時間 | 描述 |
---|---|---|
已連接 | 當連接成功時 | 當連接成功時發生。 |
已斷開連接 | 當連接失敗時 | 當連接失敗時發生。 |
#import "HIVEService.h"
@interface ChatConnectionListener : NSObject <HiveChatConnectionDelegate>
@end
@implementation ChatConnectionListener
- (void)onConnected {
// on connected
}
- (void)onDisconnected {
// on disconnected
}
@end
[ChatInterface addConnectionListenerWithUniqueKey:@"UNIQUE_KEY" listener:[[ChatConnectionListener alloc] init]];
頻道事件¶
頻道事件傳達用戶與頻道之間發生的所有事件。
頻道事件類型¶
事件名稱 | 發生時間 | 描述 |
---|---|---|
OnEnteredMember | 成員頻道參與 | 當成員加入頻道時發生。當加入頻道時,會傳遞包含參與成員信息的對象 (EnteredMember)。 |
OnExitedMember | 成員頻道退出 | 當成員退出頻道時發生。當離開頻道時,會傳遞包含退出成員信息的對象 (ExitedMember)。 |
OnDeletedChannel | 頻道刪除 | 當頻道被刪除時發生。會傳遞包含被刪除頻道信息的對象 (DeletedChannel)。 |
OnNoticeMessage | 通知消息接收 | 當接收到通知消息時發生。會傳遞包含通知消息信息的對象 (ChannelNoticeMessage)。 |
OnChannelMessage | 頻道消息接收 | 當接收到頻道消息時發生。會傳遞包含頻道消息信息的對象 (ChannelMessage)。 |
進入的成員¶
欄位名稱 | 描述 | 類型 |
---|---|---|
channelId | 事件發生的頻道ID | 字串 |
playerId | 加入成員的PlayerID | 整數 |
extraData | 額外的成員資訊 | 字串 |
timestamp | 事件發生時間 | 字串 |
退出會員¶
欄位名稱 | 描述 | 類型 |
---|---|---|
channelId | 事件發生的頻道 ID | string |
playerId | 退出成員的 PlayerID | int |
extraData | 有關成員的附加信息 | string |
timestamp | 事件發生的時間 | string |
已刪除的頻道¶
欄位名稱 | 描述 | 類型 |
---|---|---|
channelId | 已刪除的頻道 ID | 字串 |
timestamp | 事件發生時間 | 字串 |
通道通知訊息¶
欄位名稱 | 描述 | 類型 |
---|---|---|
channelId | 事件發生的頻道 ID | 字串 |
from | 通知消息的發件人 | 字串 |
message | 通知消息 | 字串 |
timestamp | 事件發生的時間 | 字串 |
頻道訊息¶
欄位名稱 | 描述 | 類型 |
---|---|---|
channelId | 事件發生的頻道 ID | 字串 |
from | 訊息發送者 | 字串 |
fromExtra | 有關訊息發送者的附加資訊 | 字串 |
to | 接收頻道 | 字串 |
message | 訊息 | 字串 |
timestamp | 事件發生時間 | 字串 |
using hive;
ChannelHandler channelHandler = new ChannelHandler
{
OnEnteredMember = (member) =>
{
// member entered
},
OnExitedMember = (member) =>
{
// member exited
},
OnDeletedChannel = (channel) =>
{
// channel deleted
},
OnNoticeMessage = (message) =>
{
// channel notice message received
},
OnChannelMessage = (message) =>
{
// channel message received
}
};
Chat.addChannelHandler("UNIQUE_KEY", channelHandler);
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
class ChannelListenerImpl : public ChannelListener {
void onEnteredMember(EnteredMember const & member) override {
// member entered
}
void onExitedMember(ExitedMember const & member) override {
// member exited
}
void onDeletedChannel(DeletedChannel const & channel) override {
// channel deleted
}
void onNoticeMessage(ChannelNoticeMessage const & message) override {
// channel notice message received
}
void onChannelMessage(ChannelMessage const & message) override {
// channel message received
}
};
Chat::addChannelListener("UNIQUE_KEY", new ChannelListenerImpl());
import com.hive.Chat;
Chat.addChannelListener("UNIQUE_KEY", object: Chat.ChannelListener{
override fun onEnteredMember(member: Chat.EnteredMember) {
// member entered
}
override fun onExitedMember(member: Chat.ExitedMember) {
// member exited
}
override fun onDeletedChannel(channel: Chat.DeletedChannel) {
// channel deleted
}
override fun onNoticeMessage(message: Chat.ChannelNoticeMessage) {
// channel notice message received
}
override fun onChannelMessage(message: Chat.ChannelMessage) {
// channel message received
}
})
import com.hive.Chat;
Chat.addChannelListener("UNIQUE_KEY", new Chat.ChannelListener(){
@Override
public void onEnteredMember(@NonNull Chat.EnteredMember member) {
// member entered
}
@Override
public void onExitedMember(@NonNull Chat.ExitedMember member) {
// member exited
}
@Override
public void onDeletedChannel(@NonNull Chat.DeletedChannel channel) {
// channel deleted
}
@Override
public void onNoticeMessage(@NonNull Chat.ChannelNoticeMessage message) {
// channel notice message received
}
@Override
public void onChannelMessage(@NonNull Chat.ChannelMessage message) {
// channel message received
}
});
import HIVEService
class ChatChannelListener: HiveChatChannelMessageDelegate {
func onEnteredMember(_ member: Chat.EnteredMember) {
// member entered
}
func onExitedMember(_ member: Chat.ExitedMember) {
// member exited
}
func onDeletedChannel(_ channel: Chat.DeletedChannel) {
// channel deleted
}
func onNoticeMessage(_ message: Chat.ChannelNoticeMessage) {
// channel notice message received
}
func onChannelMessage(_ message: Chat.ChannelMessage) {
// channel message received
}
}
ChatInterface.addChannelListener(uniqueKey: "UNIQUE_KEY", listener: ChatChannelListener())
#import "HIVEService.h"
@interface ChatChannelListener : NSObject <HiveChatChannelMessageDelegate>
@end
@implementation ChatChannelListener
- (void)onEnteredMember:(Chat.EnteredMember *)member {
// member entered
}
- (void)onExitedMember:(Chat.ExitedMember *)member {
// member exited
}
- (void)onDeletedChannel:(Chat.DeletedChannel *)channel {
// channel deleted
}
- (void)onNoticeMessage:(Chat.ChannelNoticeMessage *)message {
// channel notice message received
}
- (void)onChannelMessage:(Chat.ChannelMessage *)message {
// channel message received
}
@end
[ChatInterface addChannelListenerWithUniqueKey:@"UNIQUE_KEY" listener:[[ChatChannelListener alloc] init]];
1:1 訊息事件¶
1:1 訊息事件傳遞個人訊息發送事件。
1:1 訊息事件類型¶
事件名稱 | 發生時間 | 描述 |
---|---|---|
OnDirectMessage | 當接收到1:1消息時 | 當接收到1:1消息時發生。它傳遞一個包含1:1消息信息的對象(DirectMessage)。 |
直接訊息¶
欄位名稱 | 描述 | 類型 |
---|---|---|
from | 訊息發送者 | long |
fromExtra | 訊息發送者的附加資訊 | string |
to | 訊息接收者 | long |
message | 訊息 | string |
timestamp | 事件發生時間 | string |
#import "HIVEService.h"
@interface ChatDirectMessageListener : NSObject <HiveChatDirectMessageDelegate>
@end
@implementation ChatDirectMessageListener
- (void)onDirectMessage:(Chat.DirectMessage *)message {
// direct message received
}
@end
[ChatInterface addDirectMessageListenerWithUniqueKey:@"UNIQUE_KEY" listener:[[ChatDirectMessageListener alloc] init]];