App-Analytics
App-Analytics ohne Geräte-IDs
SDKs für Android, iOS, Flutter und React Native. Screens, Events und In-App-Käufe landen im selben Dashboard und im selben Event-Pool wie deine Websites — gehostet in der EU.
Gebaut für Apps — und für Datensparsamkeit
Alle SDKs verhalten sich gleich: ein Format, dieselben Regeln, keine Abhängigkeiten außer dem Nötigsten.
Batching
Events werden im Arbeitsspeicher gesammelt und gebündelt gesendet — spätestens bei 20 Events, nach 30 Sekunden oder wenn die App in den Hintergrund geht.
Offline-Queue
Kurze Funklöcher werden überbrückt: Wiederholung mit exponentiellem Backoff, dieselbe batch_id verhindert Duplikate, Ereignisse behalten ihren Zeitstempel.
Keine Geräte-IDs
Keine ANDROID_ID, keine IDFA/IDFV, keine Werbe-ID, kein Gerätemodell, kein Fingerprinting. Der User-Agent ist neutral (trackd-android/1.1.0).
Session nur im Speicher
Die Session-ID ist zufällig, liegt nur im Arbeitsspeicher und wechselt nach 30 Minuten Inaktivität. Die SDKs schreiben nichts auf das Gerät.
Eine Datei kopieren
Copy-in-Installation ohne Paketmanager: Trackd.kt, Trackd.swift oder trackd.dart ins Projekt — fertig. Pakete in den Registries folgen.
Events für Games
Hilfsmethoden für game_start, level_complete, game_over, ad_view, video_watch und In-App-Käufe — direkt in Funnels und Umsatz auswertbar.
In wenigen Zeilen eingebaut
Einmal beim App-Start initialisieren, danach Screens und Events tracken. YOUR_WEBSITE_ID findest du im Dashboard.
// Copy Trackd.kt to app/src/main/java/one/trackd/sdk/Trackd.kt
import one.trackd.sdk.Trackd
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
Trackd.init(this, "YOUR_WEBSITE_ID", debug = BuildConfig.DEBUG)
}
}
// Screens and events
Trackd.screen("Home")
Trackd.event("signup", mapOf("plan" to "pro"))// Add Trackd.swift (+ TrackScreenModifier.swift for SwiftUI) to your app target
import SwiftUI
@main
struct MyApp: App {
init() {
Trackd.configure(websiteId: "YOUR_WEBSITE_ID")
}
var body: some Scene { WindowGroup { ContentView() } }
}
// Screens and events
Trackd.screen("Home") // or .trackScreen("Home") on a SwiftUI view
Trackd.event("signup", data: ["plan": "pro"])// Copy trackd.dart to lib/trackd.dart
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'trackd.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
Trackd.init(
websiteId: 'YOUR_WEBSITE_ID',
appVersion: '1.0.0',
debug: kDebugMode,
);
runApp(MaterialApp(
navigatorObservers: [TrackdNavigatorObserver()], // automatic screen tracking (named routes)
home: const HomePage(),
));
}
// Events
Trackd.event('signup', {'plan': 'pro'});import { AppState, Platform } from 'react-native'
import { Trackd } from './lib/trackd.mjs' // copy-in: https://trackd.one/sdk/trackd.mjs
export const trackd = new Trackd({
websiteId: 'YOUR_WEBSITE_ID',
platform: Platform.OS, // "ios" | "android"
appVersion: '1.4.0',
})
// flush when the app goes to the background
AppState.addEventListener('change', (state) => {
if (state === 'background') trackd.onBackground()
else if (state === 'active') trackd.onForeground()
})
trackd.screen('Home')
trackd.event('signup', { plan: 'pro' })// 1. Download https://trackd.one/sdk/trackd.mjs into your project (e.g. src/lib/trackd.mjs)
import { Trackd } from './lib/trackd.mjs'
const trackd = new Trackd({ websiteId: 'YOUR_WEBSITE_ID', host: 'https://trackd.one' })
trackd.screen('Home') // screen / page view
trackd.event('signup', { plan: 'pro' }) // custom event (SDK: event, t.js: trackd.track)
trackd.revenue(9.99, 'EUR', 'order-123')Was gesendet wird — und was nicht
Jede Anfrage ist ein Batch mit grobem Kontext. Mehr verlässt die App nicht.
{
"website_id": "8f0c…",
"batch_id": "Qm3x9TzK0aP7bL2vR8cW1yNe",
"sent_at": 1760000005000,
"context": {
"platform": "android", "app_version": "2.3.1", "os_version": "Android 15",
"screen": "1080x2400", "language": "de-DE", "device": "mobile",
"session_id": "k3J9x0aQ7bP2m1LzQ8vT", "sdk": "trackd-android/1.1.0"
},
"events": [
{ "type": "screen_view", "name": "Home", "timestamp": 1760000000000 },
{ "type": "event", "event_name": "level_complete", "event_data": { "level": 5 } }
]
}Nie gesendet oder gespeichert
- Geräte-Kennungen (ANDROID_ID, IDFA, IDFV, Werbe-ID, Install-ID, MAC/IMEI)
- Gerätemodell oder Seriennummer
- Cookies, SharedPreferences, UserDefaults oder Dateien
- Fingerprinting-Signale (Canvas, Schriften, Sensoren)
- die IP-Adresse — nur ein täglich wechselnder, gesalzener Hash
Deine Aufgabe
Keine personenbezogenen Daten (Namen, E-Mails, Nutzer-IDs) in Screen-Namen oder Event-Daten schreiben — das können die SDKs nicht für dich prüfen.
Datenschutz-Angaben im App Store und bei Google Play
Diese Angaben beschreiben nur das trackd-SDK. Ergänze alles, was deine App sonst noch erhebt.
Google Play — Datensicherheit
- Erhobene Daten: App-Aktivität → App-Interaktionen (Screens, Events); bei revenue zusätzlich → Sonstige Aktionen
- Standort → Ungefährer Standort (Land, serverseitig aus der IP abgeleitet)
- Weitergabe an Dritte: Nein (trackd.one ist dein Auftragsverarbeiter)
- Verschlüsselung bei der Übertragung: Ja (HTTPS) · Zweck: Analytics
- Geräte- oder andere IDs: nicht erhoben
Apple — App-Datenschutz
- Nutzungsdaten → Produktinteraktion: nicht verknüpft, kein Tracking, Zweck Analytics
- Standort → Grober Standort (Land): nicht verknüpft, kein Tracking
- Bei revenue: Käufe → Kaufhistorie, nicht verknüpft
- Tracking: Nein — keine App-Tracking-Transparency-Abfrage durch das SDK
- PrivacyInfo.xcprivacy liegt bei — Einträge in dein Privacy Manifest übernehmen
Einwilligung: bitte selbst prüfen
Anders als das Web-Script lesen die App-SDKs Geräte- und App-Informationen auf dem Gerät aus (z. B. App- und OS-Version, Bildschirmgröße, Sprache). Ob du dafür nach § 25 TDDDG eine Einwilligung brauchst, musst du für deine App selbst bewerten — wir werben für Apps deshalb bewusst nicht mit „ohne Einwilligung“. Biete in jedem Fall eine Möglichkeit an, die Analyse abzuschalten: setEnabled(false) stoppt das Tracking und verwirft die Warteschlange. Keine Rechtsberatung.
Fragen zu App-Analytics
Wie werden Nutzer ohne Geräte-ID gezählt?
Was passiert offline?
Gibt es Pakete für Maven, Swift Package Index, pub.dev oder npm?
Kann ich Website und App im selben Konto messen?
Funktioniert trackd.one auch für Apps?
Deine erste App in wenigen Minuten messen
Starte kostenlos — der Free-Tarif ist ohne Zahlungsdaten nutzbar.