콘텐츠로 이동

채팅 문자열 수신을 위한 콜백 등록

리모트 플레이 채팅 기능은 유저가 리모트 플레이 실행 중 문자열을 입력하면 호스트 PC 게임 채팅 창에 전송되는 방식으로 구현할 수 있습니다.

1) 아래와 같이 유저가 리모트 플레이 전용 웹 내 텍스트 박스에 문자열을 입력하고 엔터 키를 누르면 문자열이 호스트 PC 게임으로 전송됩니다. * 리모트 플레이에서 최대 입력 가능한 문자 길이는 150자이며, 읽는 방향은 LTR(Left to Right) 및 RTL(Right to Left), 두 가지입니다.

2) 호스트 PC 게임에서는 미리 등록한 콜백 함수를 통해 문자열을 수신합니다.

3) 호스트 PC 게임에서는 해당 문자열을 게임 채팅창에 전달합니다.

콜백 함수 등록하기

리모트 플레이에서 채팅 기능을 사용하려면 리모트 플레이 플러그인 임포트 후, 콜백 함수를 등록해야 합니다.

콜백 함수를 등록하면 리모트 플레이 중 채팅 기능을 사용할 준비가 완료된 것으로, 게임에서는 리모트 플레이로부터 수신한 문자열을 각 게임 환경에 맞추어 채팅 기능에 적용할 수 있습니다.

게엠에서 콜백 함수를 통해 수신한 문자열은 UTF-8로 인코딩한 데이터로 Base64로 변환됩니다. 또한, 읽는 방향 정보를 포함하고 있어 다국어 지원이 가능합니다.

아래와 같이 HiveRemotePlayManager.RegisterCallback에 콜백 함수를 등록합니다.

using AOT; // MonoPInvokeCallback 때문에 필요

public class {유저 Game에서 사용하는 클래스} : MonoBehaviour {
#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 data 수신.
    }
#endif

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

채팅 문자열 프로토콜

게임에서 콜백 함수를 통해 수신한 채팅 문자열 프로코콜은 아래와 같습니다.

Web - Client JSON 프로토콜

Key Value Type Description ETC
version version number Json 버전 정보 예제 참고
eventType eventType string 이벤트 타입 - Message 항목만 존재 예제 참고
eventValue eventValue object 이벤트 값 오브젝트 예제 참고
eventValue - value eventValue - value string 이벤트 값 예제 참고
eventValue - action eventValue - action string 이벤트 동작 예제 참고
etc etc object 확장 용도 예제 참고

채팅 문자열 데이터 예시

게임에서 콜백 함수를 통해 수신한 채팅 문자열은 아래와 같은 JSON 데이터 형식을 갖습니다.

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