イベント管理¶
Hive チャット機能は、アプリクライアントに3種類のイベントを提供します。
- 接続イベント
- チャンネルイベント
- 1:1 メッセージイベント
カスタムキーでイベントリスナーを登録することで、イベントを受信できます。
接続イベント¶
接続イベントは、Hive チャットソケットサーバー接続に関連するイベントです。
接続イベントタイプ¶
| イベント名 | 発生時間 | 説明 | 
|---|---|---|
| OnConnected | 接続が成功したとき | 接続が成功したときに発生します。 | 
| OnDisconnected | 接続に失敗したとき | 接続に失敗したときに発生します。 | 
using hive;
ConnectionHandler connectionHandler = new ConnectionHandler
{
    OnConnected = () =>
    {
        // on connected
    },
    OnDisconnected = () =>
    {
        // on disconnected
    }
};
Chat.addConnectionHandler("UNIQUE_KEY", connectionHandler); // add connection handler
Chat.removeConnectionHandler("UNIQUE_KEY"); // remove connection handler
#include "HiveChat.h"
class ConnectionListener : public FHiveConnectionListener {
public:
    UChatTestView* Owner;
    ConnectionListener(UChatTestView* InOwner) : Owner(InOwner) {}
    virtual void onConnected() override {
        // on connected
    }
    仮想 void onDisconnected() オーバーライド {
        // 切断されたとき
    }
};
FHiveChat::AddConnectionListener("UNIQUE_KEY", new ConnectionListener(this)); // 接続リスナーを追加
FHiveChat::RemoveConnectionListener("UNIQUE_KEY"); // 接続リスナーを削除
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
class ConnectionListenerImpl : public ConnectionListener {
    void onConnected() override {
        // on connected
    }
    void onDisconnected() override {
        // 切断されたとき
    }
};
Chat::addConnectionListener("UNIQUE_KEY", new ConnectionListenerImpl()); // 接続リスナーを追加
Chat::removeConnectionListener("UNIQUE_KEY"); // 接続リスナーを削除
import HIVEService
class ChatConnectionListener: HiveChatConnectionDelegate {
    func onConnected() {
        // on connected
    }
    func onDisconnected() {
        // 切断時
    }
}
ChatInterface.addConnectionListener(uniqueKey: "UNIQUE_KEY", listener: 
    ChatConnectionListener()) // 接続リスナーを追加
ChatInterface.removeConnectionListener(uniqueKey: "UNIQUE_KEY") // 接続リスナーを削除
#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]]; // 接続リスナーを追加
[ChatInterface removeConnectionListenerWithUniqueKey:@"UNIQUE_KEY"]; // 接続リスナーを削除
チャンネルイベント¶
チャネルイベントは、ユーザーとチャネルの間で発生するすべてのイベントを伝えます。
チャンネルイベントタイプ¶
| イベント名 | 発生時間 | 説明 | 
|---|---|---|
| OnEnteredMember | メンバー チャンネル参加 | メンバーがチャンネルに参加したときに発生します。チャンネルに参加する際に、参加しているメンバーの情報を含むオブジェクト (EnteredMember) が渡されます。 | 
| OnExitedMember | メンバー チャンネル退出 | メンバーがチャンネルを退出したときに発生します。チャンネルを離れる際に、退出したメンバーの情報を含むオブジェクト (ExitedMember) が渡されます。 | 
| OnDeletedChannel | チャンネル削除 | チャンネルが削除されたときに発生します。削除されたチャンネルの情報を含むオブジェクト (DeletedChannel) が渡されます。 | 
| OnNoticeMessage | 通知メッセージ受信 | 通知メッセージを受信したときに発生します。通知メッセージの情報を含むオブジェクト (ChannelNoticeMessage) が渡されます。 | 
| OnChannelMessage | チャンネルメッセージ受信 | チャンネルメッセージを受信したときに発生します。チャンネルメッセージの情報を含むオブジェクト (ChannelMessage) が渡されます。 | 
入会したメンバー¶
| フィールド名 | 説明 | タイプ | 
|---|---|---|
| channelId | イベントが発生したチャンネルID | string | 
| playerId | 参加したメンバーのPlayerID | int | 
| extraData | 追加のメンバー情報 | string | 
| timestamp | イベント発生時間 | string | 
退会したメンバー¶
| フィールド名 | 説明 | タイプ | 
|---|---|---|
| channelId | イベントが発生したチャンネルID | string | 
| playerId | 退出したメンバーのPlayerID | int | 
| extraData | メンバーに関する追加情報 | string | 
| timestamp | イベントが発生した時間 | string | 
削除されたチャンネル¶
| フィールド名 | 説明 | タイプ | 
|---|---|---|
| channelId | 削除されたチャンネルID | string | 
| timestamp | イベント発生時間 | string | 
チャンネル通知メッセージ¶
| フィールド名 | 説明 | タイプ | 
|---|---|---|
| channelId | イベントが発生したチャンネルID | string | 
| from | 通知メッセージの送信者 | string | 
| message | 通知メッセージ | string | 
| timestamp | イベントが発生した時間 | string | 
チャンネルメッセージ¶
| フィールド名 | 説明 | タイプ | 
|---|---|---|
| channelId | イベントが発生したチャンネルID | string | 
| from | メッセージ送信者 | string | 
| fromExtra | メッセージ送信者に関する追加情報 | string | 
| to | 受信チャンネル | string | 
| message | メッセージ | string | 
| timestamp | イベント発生時間 | string | 
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); // add channel handler
Chat.removeChannelHandler("UNIQUE_KEY"); // remove channel handler
```cpp
include "HiveChat.h"¶
class ChannelListener : public FHiveChannelListener { public: UChatTestView* Owner; ChannelListener(UChatTestView* InOwner) : Owner(InOwner) {}
virtual void onNoticeMessage(const FHiveChannelNoticeMessage& message) override {
    // チャンネル通知メッセージを受信しました
}
virtual void onChannelMessage(const FHiveChannelMessage& message) override {
    // チャンネルメッセージを受信しました
}
virtual void onDeletedChannel(const FHiveDeletedChannel& channel) override {
    // channel deleted
}
virtual void onEnteredMember(const FHiveEnteredMember& member) override {
    // メンバーが参加しました
}
virtual void onExitedMember(const FHiveExitedMember& member) override {
    // メンバーが退出しました
}
};
FHiveChat::AddChannelListener("UNIQUE_KEY", new ChannelListener(this)); // チャンネルリスナーを追加 FHiveChat::RemoveChannelListener("UNIQUE_KEY"); // チャンネルリスナーを削除 ```
#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 {
        // メンバーが退出しました
    }
    void onDeletedChannel(DeletedChannel const & channel) override {
        // channel deleted
    }
    void onNoticeMessage(ChannelNoticeMessage const & message) override {
        // チャンネル通知メッセージを受信しました
    }
    void onChannelMessage(ChannelMessage const & message) override {
        // channel message received
    }
};
Chat::addChannelListener("UNIQUE_KEY", new ChannelListenerImpl()); // チャンネルリスナーを追加
Chat::removeChannelListener("UNIQUE_KEY"); // チャンネルリスナーを削除
import com.hive.Chat;
    // チャンネルリスナーを追加
Chat.addChannelListener("UNIQUE_KEY", object: Chat.ChannelListener{
    override fun onEnteredMember(member: Chat.EnteredMember) {
        // メンバーが参加しました
    }
    override fun onExitedMember(member: Chat.ExitedMember) {
        // member exited
    }
    override fun onDeletedChannel(channel: Chat.DeletedChannel) {
        // channel deleted
    }
    override fun onNoticeMessage(message: Chat.ChannelNoticeMessage) {
        // チャンネル通知メッセージを受信しました
    }
    override fun onChannelMessage(message: Chat.ChannelMessage) {
        // チャンネルメッセージを受信しました
    }
})
    // チャネルリスナーを削除する
Chat.removeChannelListener("UNIQUE_KEY"); 
import com.hive.Chat;
    // チャンネルリスナーを追加
Chat.addChannelListener("UNIQUE_KEY", new Chat.ChannelListener(){
    @Override
    public void onEnteredMember(@NonNull Chat.EnteredMember member) {
        // メンバーが参加しました
    }
    @Override
    public void onExitedMember(@NonNull Chat.ExitedMember member) {
        // メンバーが退出しました
    }
    @Override
    public void onDeletedChannel(@NonNull Chat.DeletedChannel channel) {
        // channel deleted
    }
    @Override
    public void onNoticeMessage(@NonNull Chat.ChannelNoticeMessage message) {
        // チャンネル通知メッセージを受信しました
    }
    @Override
    public void onChannelMessage(@NonNull Chat.ChannelMessage message) {
        // channel message received
    }
});
    // チャネルリスナーを削除する
Chat.removeChannelListener("UNIQUE_KEY");
import HIVEService
class ChatChannelListener: HiveChatChannelMessageDelegate {
    func onEnteredMember(_ member: Chat.EnteredMember) {
        // メンバーが入室しました
    }
    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()) // チャンネルリスナーを追加
ChatInterface.removeChannelListener(uniqueKey: "UNIQUE_KEY") // チャンネルリスナーを削除
#import "HIVEService.h"
@interface ChatChannelListener : NSObject <HiveChatChannelMessageDelegate>
@end
@implementation ChatChannelListener
- (void)onEnteredMember:(Chat.EnteredMember *)member {
    // メンバーが参加しました
}
- (void)onExitedMember:(Chat.ExitedMember *)member {
    // メンバーが退出しました
}
- (void)onDeletedChannel:(Chat.DeletedChannel *)channel {
    // channel deleted
}
- (void)onNoticeMessage:(Chat.ChannelNoticeMessage *)message {
    // チャンネル通知メッセージを受信しました
}
- (void)onChannelMessage:(Chat.ChannelMessage *)message {
    // チャンネルメッセージを受信しました
}
@end
[ChatInterface addChannelListenerWithUniqueKey:@"UNIQUE_KEY" listener:[[ChatChannelListener alloc] init]]; // チャネルリスナーを追加
[ChatInterface removeChannelListenerWithUniqueKey:@"UNIQUE_KEY"]; // チャネルリスナーを削除
1:1 メッセージイベント¶
1:1メッセージイベントは、個人メッセージ送信イベントを提供します。
1:1 メッセージイベントタイプ¶
| イベント名 | 発生時間 | 説明 | 
|---|---|---|
| OnDirectMessage | 1:1メッセージを受信したとき | 1:1メッセージが受信されたときに発生します。1:1メッセージ情報を含むオブジェクトを配信します(DirectMessage)。 | 
ダイレクトメッセージ¶
| フィールド名 | 説明 | タイプ | 
|---|---|---|
| from | メッセージ送信者 | long | 
| fromExtra | メッセージ送信者の追加情報 | string | 
| to | メッセージ受信者 | long | 
| message | メッセージ | string | 
| timestamp | イベント発生時間 | string | 
using hive;
DirectMessageHandler directMessageHandler = new DirectMessageHandler
{
    OnDirectMessage = (message) =>
    {
        // direct message received
    }
};
Chat.addDirectMessageHandler("UNIQUE_KEY", directMessageHandler); // add direct message handler
Chat.removeDirectMessageHandler("UNIQUE_KEY"); // remove direct message handler
class DirectMessageListener : public FHiveDirectMessageListener {
public:
    UChatTestView* Owner;
    DirectMessageListener(UChatTestView* InOwner) : Owner(InOwner) {}
    virtual void onDirectMessage(const FHiveDirectMessage& message) override {
        // 直接メッセージを受信しました
    }
};
FHiveChat::AddDirectMessageListener("UNIQUE_KEY", new DirectMessageListener(this)); // add direct message listener
FHiveChat::RemoveDirectMessageListener("UNIQUE_KEY"); // ダイレクトメッセージリスナーを削除
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
class DirectMessageListenerImpl : public DirectMessageListener {
    void onDirectMessage(DirectMessage const & message) override {
        // direct message received
    }
};
Chat::addDirectMessageListener("UNIQUE_KEY", new DirectMessageListenerImpl()); // 直接メッセージリスナーを追加
Chat::removeDirectMessageListener("UNIQUE_KEY"); // 直接メッセージリスナーを削除
import HIVEService
class ChatDirectMessageListener: HiveChatDirectMessageDelegate {
    func onDirectMessage(_ message: Chat.DirectMessage) {
        // direct message received
    }
}
ChatInterface.addDirectMessageListener(uniqueKey: "UNIQUE_KEY", listener: ChatDirectMessageListener()) // 直接メッセージリスナーを追加
ChatInterface.removeDirectMessageListener(uniqueKey: "UNIQUE_KEY") // 直接メッセージリスナーを削除
#import "HIVEService.h"
@interface ChatDirectMessageListener : NSObject <HiveChatDirectMessageDelegate>
@end
@implementation ChatDirectMessageListener
- (void)onDirectMessage:(Chat.DirectMessage *)message {
    // ダイレクトメッセージを受信しました
}
@end
[ChatInterface addDirectMessageListenerWithUniqueKey:@"UNIQUE_KEY" listener:[[ChatDirectMessageListener alloc] init]]; // ダイレクトメッセージリスナーを追加
[ChatInterface removeDirectMessageListenerWithUniqueKey:@"UNIQUE_KEY"]; // ダイレクトメッセージリスナーを削除