コンテンツにスキップ

イベント管理

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 com.hive.Chat;

    // 接続リスナーを追加
Chat.addConnectionListener("UNIQUE_KEY", object : ConnectionListener{
    override fun onConnected() {
        // 接続時
    }

    override fun onDisconnected() {
        // 切断されたとき
    }
})

    // 接続リスナーを削除する
Chat.removeConnectionListener("UNIQUE_KEY"); 
import com.hive.Chat;

    // 接続リスナーを追加
Chat.addConnectionListener("UNIQUE_KEY", new Chat.ConnectionListener() {
    @Override
    public void onConnected() {
        // 接続時
    }

    @Override
    public void onDisconnected() {
        // on disconnected
    }
});

    // 接続リスナーを削除する
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 com.hive.Chat;

    // 直接メッセージリスナーを追加
Chat.addDirectMessageListener("UNIQUE_KEY", object: Chat.DirectMessageListener{
    override fun onDirectMessage(message: Chat.DirectMessage) {
        // 直接メッセージを受信
    }
})

    // ダイレクトメッセージリスナーを削除する
Chat.removeDirectMessageListener("UNIQUE_KEY");
import com.hive.Chat;

     // ダイレクトメッセージリスナーを追加
Chat.addDirectMessageListener("UNIQUE_KEY", new Chat.DirectMessageListener() {
    @Override
    public void onDirectMessage(@NonNull Chat.DirectMessage message) {
        // ダイレクトメッセージを受信
    }
});

    // ダイレクトメッセージリスナーを削除する
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"]; // ダイレクトメッセージリスナーを削除