
Teman
Hubungkan pemain melalui permintaan dan daftar teman.
SDK dan REST
Integrasikan Unity, Godot, atau Unreal, atau gunakan antarmuka REST.
Dasbor proyek
Konfigurasikan setiap fitur dan kelola data terkininya di proyek Anda.
Integrasi Cepat
Teman
Video segera hadir
Teman, permintaan, dan blokir proyek terpilih.
using UnityEngine;
using PM.horizOn.Cloud.Manager;
var userId = UserManager.Instance.CurrentUser.UserId;
var manager = FriendsManager.Instance;
var loaded = await manager.GetFriends(userId);
if (!loaded.IsSuccess) { Debug.LogWarning(loaded.ErrorCode); return; }
Debug.Log(loaded.Data.friendCode); // Public identifier, not a credential.
foreach (var friend in loaded.Data.friends)
Debug.Log(friend.display.name + ": " + (friend.lastActiveAt ?? "unknown"));
// Invoke only after the player explicitly reviews this snapshot and chooses an action.
async System.Threading.Tasks.Task ApplyReviewed(string action, string targetUserId,
long expectedRevision, string requestId = null)
{
var result = action switch {
"request" => await manager.SendRequest(userId, targetUserId, expectedRevision),
"accept" => await manager.AcceptRequest(userId, targetUserId, expectedRevision, requestId),
"decline" => await manager.DeclineRequest(userId, targetUserId, expectedRevision, requestId),
"cancel" => await manager.CancelRequest(userId, targetUserId, expectedRevision, requestId),
"remove" => await manager.RemoveFriend(userId, targetUserId, expectedRevision),
"block" => await manager.BlockPlayer(userId, targetUserId, expectedRevision),
"unblock" => await manager.UnblockPlayer(userId, targetUserId, expectedRevision),
_ => throw new System.ArgumentException("Unknown action")
};
if (!result.IsSuccess) {
Debug.LogWarning(result.ErrorCode); // Timeout/409: reload and reconcile; do not repeat automatically.
return;
}
Debug.Log(result.Data.revision); // Replace the whole displayed snapshot.
}
// Accept/decline: original incoming requestId. Cancel: original outgoing requestId.
// Never replace expectedRevision on an uncertain retry. A new request is a new identity.
// FindPlayer(userId, exactUuidOrHCode) never searches names or emails.
// Last login is nullable, never an online flag. No hidden polling timer.Contoh ini memakai Unity SDK (C#) dan REST API. Godot dan Unreal memiliki panggilan yang sama di SDK masing-masing: lihat quickstart
Pertanyaan yang Sering Diajukan
Siap untuk Integrasi?
Mulai membangun dengan horizOn hari ini. Paket gratis tersedia.
