FL
IDN-POS CAFE
active production
Package: com.example.app
•
Created: 22 Aug 2026
App Credentials
app_live_BWMXuKNis9J9xMpMc0wU84irapoXLvukpMjBCkmH
https://www.manage-app.idnacode.my.id/api/v1/errors
App Metrics
Total Crashes
0
Unresolved Issues
0
Total Grouped Issues
0
Siap menghubungkan mobile app ke endpoint ini?
↓ Lihat Code Snippet di Bawah
Panduan Integrasi & In-App Update Management
Salin kode integrasi crash logger atau kelola rilis file installer (APK/IPA) untuk in-app update.
Terbitkan Rilis / Installer Versi Baru
Histori Rilis Aplikasi
| Versi & Build | Mode Update | Changelog | Download & File Size | Status | Aksi |
|---|---|---|---|---|---|
| v1.0.3 Build 4 (Min: 4) | Opsional | - |
Download
(26.3 MB)
|
published | |
| v1.0.2 Build 3 (Min: 3) | Opsional | - |
Download
(26.9 MB)
|
published | |
| v1.0.1 Build 2 (Min: 2) | Opsional | - |
Download
(26.3 MB)
|
published | |
| v1.0.0 Build 1 (Min: 1) | Opsional | - |
Download
(26.9 MB)
|
published |
Mobile Client Check Update Endpoint:
GET https://www.manage-app.idnacode.my.id/api/v1/apps/check-update?build_number=84&app_version=2.4.1
Tambahkan error handler di file main.dart Flutter Anda:
import 'dart:async';
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
const String kCrashApiUrl = 'https://www.manage-app.idnacode.my.id/api/v1/errors';
const String kAppApiKey = 'app_live_BWMXuKNis9J9xMpMc0wU84irapoXLvukpMjBCkmH';
Future<void> reportMobileError(Object error, StackTrace? stackTrace, {String severity = 'fatal'}) async {
try {
await http.post(
Uri.parse(kCrashApiUrl),
headers: {
'Content-Type': 'application/json',
'X-App-Key': kAppApiKey,
},
body: jsonEncode({
'exception_class': error.runtimeType.toString(),
'message': error.toString(),
'severity': severity,
'stack_trace': stackTrace?.toString(),
'os_name': defaultTargetPlatform.name,
'app_version': '1.0.0',
'breadcrumbs': [
{'category': 'lifecycle', 'message': 'App running', 'timestamp': DateTime.now().toIso8601String()}
],
}),
);
} catch (_) {}
}
void main() {
FlutterError.onError = (FlutterErrorDetails details) {
FlutterError.presentError(details);
reportMobileError(details.exception, details.stack);
};
PlatformDispatcher.instance.onError = (error, stack) {
reportMobileError(error, stack);
return true;
};
runApp(const MyApp());
}
Tambahkan global error handler di entry point index.js atau App.tsx:
import { Platform } from 'react-native';
const CRASH_API_URL = 'https://www.manage-app.idnacode.my.id/api/v1/errors';
const APP_API_KEY = 'app_live_BWMXuKNis9J9xMpMc0wU84irapoXLvukpMjBCkmH';
export const reportError = async (error, isFatal = false) => {
try {
await fetch(CRASH_API_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-App-Key': APP_API_KEY,
},
body: JSON.stringify({
exception_class: error.name || 'Error',
message: error.message || String(error),
severity: isFatal ? 'fatal' : 'error',
stack_trace: error.stack || '',
os_name: Platform.OS === 'ios' ? 'iOS' : 'Android',
os_version: String(Platform.Version),
app_version: '1.0.0',
}),
});
} catch (e) {}
};
if (global.ErrorUtils) {
const defaultHandler = global.ErrorUtils.getGlobalHandler();
global.ErrorUtils.setGlobalHandler((error, isFatal) => {
reportError(error, isFatal);
defaultHandler(error, isFatal);
});
}
Set uncaught exception handler di MainApplication.kt:
import android.os.Build
import org.json.JSONObject
import java.io.OutputStreamWriter
import java.net.HttpURLConnection
import java.net.URL
import kotlin.concurrent.thread
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
val defaultHandler = Thread.getDefaultUncaughtExceptionHandler()
Thread.setDefaultUncaughtExceptionHandler { thread, throwable ->
reportCrash(throwable)
defaultHandler?.uncaughtException(thread, throwable)
}
}
private fun reportCrash(t: Throwable) {
thread {
try {
val url = URL("https://www.manage-app.idnacode.my.id/api/v1/errors")
val conn = url.openConnection() as HttpURLConnection
conn.requestMethod = "POST"
conn.setRequestProperty("Content-Type", "application/json")
conn.setRequestProperty("X-App-Key", "app_live_BWMXuKNis9J9xMpMc0wU84irapoXLvukpMjBCkmH")
conn.doOutput = true
val json = JSONObject().apply {
put("exception_class", t.javaClass.simpleName)
put("message", t.message ?: "Unknown crash")
put("severity", "fatal")
put("stack_trace", android.util.Log.getStackTraceString(t))
put("os_name", "Android")
put("os_version", Build.VERSION.RELEASE)
put("device_model", Build.MODEL)
}
OutputStreamWriter(conn.outputStream).use { it.write(json.toString()) }
conn.responseCode
} catch (e: Exception) {
e.printStackTrace()
}
}
}
}
Tangkap error di iOS via AppDelegate.swift:
import UIKit
func sendCrashReport(name: String, reason: String, stack: [String]) {
guard let url = URL(string: "https://www.manage-app.idnacode.my.id/api/v1/errors") else { return }
var req = URLRequest(url: url)
req.httpMethod = "POST"
req.setValue("application/json", forHTTPHeaderField: "Content-Type")
req.setValue("app_live_BWMXuKNis9J9xMpMc0wU84irapoXLvukpMjBCkmH", forHTTPHeaderField: "X-App-Key")
let payload: [String: Any] = [
"exception_class": name,
"message": reason,
"severity": "fatal",
"stack_trace": stack.joined(separator: "\n"),
"os_name": "iOS",
"os_version": UIDevice.current.systemVersion,
"device_model": UIDevice.current.model
]
req.httpBody = try? JSONSerialization.data(withJSONObject: payload)
URLSession.shared.dataTask(with: req).resume()
}
NSSetUncaughtExceptionHandler { exception in
sendCrashReport(
name: exception.name.rawValue,
reason: exception.reason ?? "Crash",
stack: exception.callStackSymbols
)
}
Uji kirim log via terminal dengan cURL:
curl -X POST "https://www.manage-app.idnacode.my.id/api/v1/errors" \
-H "Content-Type: application/json" \
-H "X-App-Key: app_live_BWMXuKNis9J9xMpMc0wU84irapoXLvukpMjBCkmH" \
-d '{
"exception_class": "NullPointerException",
"message": "Attempt to invoke method on null object reference",
"severity": "error",
"stack_trace": "at com.example.MainActivity.onCreate(MainActivity.kt:42)",
"app_version": "1.0.0",
"os_name": "Android"
}'
Issues in IDN-POS CAFE
Daftar issue error yang dilaporkan oleh aplikasi ini
Belum ada issue error untuk aplikasi ini. Klik "Send Test Crash" di atas untuk mencoba!