
تجميع ذكي
الأعطال ذات البصمة المتطابقة تُجمّع تلقائيًا لتظهر مشكلة واحدة قابلة للإصلاح بدلاً من آلاف التقارير المكررة.
مسار Breadcrumb
ما يصل إلى 50 حدث Breadcrumb قبل العطل تكشف بالضبط ما كان يفعله اللاعب لتتمكن من إعادة إنتاج المشكلة بثقة.
معدل الجلسات الخالية من الأعطال
تتبع نسبة الجلسات التي تكتمل دون أعطال وراقب تحسنها مع حلّك للمشكلات بمرور الوقت.
تكامل سريع
اللعبة قيد التشغيل
// Unity C# - Crash Reporting
using HorizOn;
var horizon = new HorizonClient("YOUR_API_KEY");
// Create a crash session at app start
var sessionId = Guid.NewGuid().ToString();
await horizon.Crashes.CreateSession(sessionId, "1.2.3", "Android");
// Report a fatal crash
await horizon.Crashes.Report(new CrashReport {
SessionId = sessionId,
Type = CrashType.Crash,
Message = "NullReferenceException in PlayerController",
Fingerprint = "PlayerController.NullRef",
StackTrace = System.Environment.StackTrace,
AppVersion = "1.2.3",
Platform = "Android",
Os = "Android 14",
DeviceModel = SystemInfo.deviceModel
});
// Report a non-fatal exception
await horizon.Crashes.Report(new CrashReport {
SessionId = sessionId,
Type = CrashType.NonFatal,
Message = "Failed to load texture asset",
Fingerprint = "AssetLoader.TextureFail",
AppVersion = "1.2.3"
});# REST API - Crash Reporting
# Create a crash session at app start
curl -X POST https://eu.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
curl -X POST https://eu.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"
}'