
채팅 관리
실시간 메시지를 교환하세요. 이전 기록은 클라이언트에 남습니다.
SDK 및 REST
Unity, Godot, Unreal과 통합하거나 REST 인터페이스를 사용하세요.
프로젝트 대시보드
프로젝트에서 각 기능을 설정하고 현재 데이터를 관리하세요.
빠른 통합
quickstart.dashboard.videos.chat
동영상 준비 중
quickstart.videoSummaries.chat
using UnityEngine;
using PM.horizOn.Cloud.Manager;
// Existing imported SDK and authenticated player session required.
// Call these methods explicitly from a player action; nothing runs on startup.
public sealed class ChatDemo : MonoBehaviour
{
public async void ReadChannelSnapshot(string channelId)
{
var user = UserManager.Instance.CurrentUser;
if (user == null || !user.IsValid()) return;
var result = await ChatManager.Instance.SyncChannel(user.UserId, channelId);
if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
Debug.Log("Snapshot epoch: " + result.Data.channel.epoch);
foreach (var message in result.Data.messages) Debug.Log(message.text);
// This is the small authorized server window, not the full device history.
// A raw snapshot does not authorize or populate a managed realtime feed.
// WatchChannel waits for confirmed subscription; revocation hides the feed.
}
public void ReadDeviceHistory(string channelId, string before = null)
{
var user = UserManager.Instance.CurrentUser;
if (user == null || !user.IsValid()) return;
var page = ChatManager.Instance.ReadLocalHistory(channelId, before, 50);
if (!page.IsSuccess) { Debug.LogWarning(page.ErrorCode); return; }
foreach (var message in page.Data.messages) Debug.Log(message.text);
// Continue only on an explicit action using page.Data.nextCursor.
// Local delivered history can outlive the small current server window.
// For send/report, import the SDK ChatExample and preserve its original
// operationId, issuedAt, channel and text before one explicit send.
// An uncertain outcome never permits a fresh identity or implicit retry.
}
}SDK는 수신한 기록을 서버의 실시간 창과 별도로 기기에 저장합니다. 계정을 바꾸면 숨겨지며, 명시적으로 로컬에서 삭제해야만 지워집니다. 퀵스타트 보기
