الأصدقاء

الأصدقاء

اربط اللاعبين عبر الطلبات وقوائم الأصدقاء.

ابدأ مجانًا

الأصدقاء

اربط اللاعبين عبر الطلبات وقوائم الأصدقاء.

حزم SDK وREST

ادمج Unity أو Godot أو Unreal، أو استخدم واجهة REST.

لوحة المشروع

اضبط كل ميزة وأدر بياناتها الحالية في مشروعك.

تكامل سريع

تكامل سريع

الأصدقاء
الفيديو قريباً

الأصدقاء والطلبات والحظر في المشروع المحدد.

تكامل سريع
Unity (C#)
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.

تستخدم هذه الأمثلة Unity SDK (C#) وREST API. لدى Godot وUnreal الاستدعاءات نفسها في حزم SDK الخاصة بهما: راجع البدء السريع

الأسئلة الشائعة

الأسئلة الشائعة

مستعد للتكامل؟

ابدأ البناء مع horizOn اليوم. الباقة المجانية متاحة.