
تجميع ذكي
الأعطال ذات البصمة المتطابقة تُجمّع تلقائيًا لتظهر مشكلة واحدة قابلة للإصلاح بدلاً من آلاف التقارير المكررة.
مسار Breadcrumb
ما يصل إلى 50 حدث Breadcrumb قبل العطل تكشف بالضبط ما كان يفعله اللاعب لتتمكن من إعادة إنتاج المشكلة بثقة.
معدل الجلسات الخالية من الأعطال
تتبع نسبة الجلسات التي تكتمل دون أعطال وراقب تحسنها مع حلّك للمشكلات بمرور الوقت.
تكامل سريع
اللعبة قيد التشغيل
// Unity C#: Crash Reporting
using System;
using System.Collections.Generic;
using PM.horizOn.Cloud.Manager;
// Once at startup: registers the crash session and catches unhandled exceptions
CrashManager.Instance.StartCapture();
CrashManager.Instance.SetUserId(UserManager.Instance.CurrentUser.UserId);
// Context that is sent with the next report
CrashManager.Instance.RecordBreadcrumb("scene", "Entered world_3");
// Report a handled exception as NON_FATAL
try { LoadTextures(); }
catch (Exception ex)
{
CrashManager.Instance.RecordException(ex, new Dictionary<string, string> { ["asset"] = "boss_texture" });
}# REST API: Crash Reporting
# Create a crash session at app start
curl -X POST https://horizon.pm/api/v1/app/crash-reports/session \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sessionId":"SESSION_ID","appVersion":"1.2.3","platform":"Android"}'
# Report a crash (type CRASH, NON_FATAL or ANR)
curl -X POST https://horizon.pm/api/v1/app/crash-reports/create \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sessionId": "SESSION_ID",
"type": "CRASH",
"message": "NullReferenceException in PlayerController",
"fingerprint": "PlayerController.NullRef",
"appVersion": "1.2.3",
"sdkVersion": "1.0.0",
"platform": "Android",
"os": "Android 14",
"deviceModel": "Pixel 8"
}'تستخدم هذه الأمثلة Unity SDK (C#) وREST API. لدى Godot وUnreal الاستدعاءات نفسها في حزم SDK الخاصة بهما: راجع البدء السريع
