跳轉至

註冊回呼以接收聊天字串

遠端遊玩聊天功能可以實現為當用戶在遠端遊玩期間輸入字符串時,它會被發送到主機電腦的遊戲聊天窗口。

1) 當用戶在下方顯示的網頁遠端播放文本框中輸入字符串並按下回車鍵時,該字符串將發送到主機電腦遊戲。 * 遠端播放的最大輸入長度為150個字符,閱讀方向為LTR(從左到右)和RTL(從右到左)。

2) 在主機電腦遊戲中,字串是通過預先註冊的回調函數接收的。

3) 在主機電腦遊戲中,對應的字串會傳遞到遊戲聊天視窗。

註冊回調函數

要在遠端播放中使用聊天功能,您需要在導入遠端播放插件後註冊回調函數。

透過註冊回調函數,聊天功能將在遠端遊玩期間準備就緒,允許遊戲根據每個遊戲環境將從遠端遊玩接收到的字串應用於聊天功能。

透過回調函數在遊戲中接收到的字符串以 UTF-8 編碼並轉換為 Base64。此外,它們還包含讀取方向信息,支持多語言。

使用如下所示的HiveRemotePlayManager.RegisterCallback注册回调函数。

using AOT; // Required for MonoPInvokeCallback

public class {YourCustomClass} : MonoBehaviour { // YourCustomClass: 在您的用户游戏中使用的类
#if !UNITY_EDITOR && UNITY_STANDALONE_WIN
    [MonoPInvokeCallback (typeof(HiveRemotePlayManager.RemotePlayCallbackType))]
    public static void RegisterRemoteCallbackFunction(int type, string remotePlayJsonData)
    {
        Debug.Log("REMOTE Callback DATA :" + remotePlayJsonData); // 接收来自RemoteSDK发送的json数据。
    }
#endif

    void Start() {
#if !UNITY_EDITOR && UNITY_STANDALONE_WIN
        HiveRemotePlayManager.RegisterCallback(RegisterRemoteCallbackFunction);
#endif
    }
}

將以下內容添加到 [Your_Project_Root]/Source/[Your_Project_Name]/[Your_Project_Name].build.cs。 將 [Your_Project_Name] 替換為您項目的實際名稱。

public class <Your_Project_Name> : ModuleRules
{
    public <Your_Project_Name>(ReadOnlyTargetRules Target) : base(Target)
    {
        ...
        PublicDependencyModuleNames.AddRange(new string[] { "HiveRemotePlay" });
        ...
    }
}

專案實施中使用的代碼示例如下。

#include "RemotePluginInterface.h"  // Required in the project's build.cs: PublicDependencyModuleNames.AddRange(new string[] { "HiveRemotePlay" });

// 示例 API 1. 临时 API 名称
void SendRemotePlayKeyCallback(int _type, const char* _pData) {
    UE_LOG(LogTemp, VeryVerbose, TEXT("==================SendRemotePlayKeyCallback================\n"));
    char typeBuffer[35];
    char* typeStr;
    typeStr = _itoa(_type, typeBuffer, 10);
    UE_LOG(LogTemp, VeryVerbose, TEXT("type : %s \n"), *FString(typeStr));
    UE_LOG(LogTemp, VeryVerbose, TEXT("type : %s \n"), *FString(_pData)); // 示例: {"version":"1.0.250300","eventType":"Message","eventValue":{"value":"MTFIZWxsbyBrZXkgaW5wdXQgMQ==","action":"LTR"},"etc":{}} 
}

// 示例 API 2. 在登录后调用此 API,例如:内部登录回调
void RegisterHiveRemoteCallback {
    RegisterCallback(SendRemotePlayKeyCallback);
}

聊天字符串协议

遊戲中通過回調函數接收到的聊天字符串的協議如下。

網頁 - 客戶端 JSON 協議

值類型 描述 其他
版本 版本 數字 Json 版本資訊 參考範例
事件類型 事件類型 字符串 事件類型 - 只有消息項存在 參考範例
事件值 事件值 對象 事件值對象 參考範例
事件值 - 值 事件值 - 值 字符串 事件值 參考範例
事件值 - 行動 事件值 - 行動 字符串 事件行動 參考範例
其他 其他 對象 擴展用途 參考範例

聊天字符串數據範例

遊戲中通過回調函數接收到的聊天字符串具有以下JSON數據格式。

{
    "version"        : "1.0.2411.0",
    "eventType"       : "Message" ,
    "eventValue"     : {
                            "value"  : "Something Message",
                            "action" : "LTR | RTL"
                       },
    "etc"            : { }
}
// value    : Base64  (UTF-8 문장) 인코딩
// action   : LTR (아랍어를 제외한 문자) | RTL (아랍어)