How anonymous product analytics work in Pixel Pitch using TelemetryDeck.
Implementation: PixelPitch/Game/AppAnalytics.swift — all signals go through typed helpers.
| Setting | Value |
|---|---|
| SDK | TelemetryDeck Swift SDK (Swift Package) |
| Init | PixelPitchApp.configureTelemetry() |
| App ID | D5F693A3-E432-4416-BCA2-DDF8E17E8C59 |
| Signal prefix | PixelPitch. |
| DEBUG | testMode = true, 2s transmit interval, debug logging |
| RELEASE | Live signals (no test flag) |
Full event names are prefixed with PixelPitch. in the dashboard.
| Signal | Trigger | Parameters |
|---|---|---|
App.launched |
Cold start | — |
Splash.completed |
Splash dismissed | method: auto | tap |
| Signal | Trigger | Parameters |
|---|---|---|
Navigation.menu |
Main menu shown | — |
Navigation.exhibition |
Exhibition picker | — |
Navigation.league |
League hub | — |
Navigation.settings |
Settings screen | — |
Menu.modeSelected |
Main menu button tapped | mode: exhibition | league | settings |
| Signal | Trigger | Parameters |
|---|---|---|
Match.kickOff |
Match starts | format, difficulty, length, formation, mode; league adds playerSide, homeTeam, awayTeam |
Match.finished |
Full time | format, difficulty, homeScore, awayScore, result, mode |
Match.rematch |
Rematch (exhibition) | format, difficulty, length, formation |
Match.returnToMenu |
Exit match | mode: exhibition | league |
Match.viewLeagueTable |
TABLE from league result | — |
mode is exhibition or league.
result is win, loss, or draw from the human player’s perspective (correct for away league fixtures).
| Signal | Trigger | Parameters |
|---|---|---|
League.settingsChanged |
Pre-season setup changed | teamCount, schedule, format, difficulty, length |
League.newSeason |
New season started | season |
League.fixturePlayed |
League result saved | season, homeScore, awayScore, result, played, total |
League.seasonComplete |
All player fixtures done | season, champion, playerPosition |
| Signal | Trigger | Parameters |
|---|---|---|
Settings.legalOpened |
Privacy or support sheet opened | document: privacy | support |
Settings.linkOpened |
External site link tapped | destination: privacy | support |
Settings.leagueReset |
League save cleared | — |
Menu.modeSelected vs Match.kickOff for conversionLeague.seasonComplete / League.fixturePlayed for league engagementApp.launched → Splash.completed → Match.kickOffMenu.modeSelected (exhibition vs league)Match.kickOff → Match.finished → Match.rematchNavigation.league → League.settingsChanged → Match.kickOff (league) → League.fixturePlayed → League.seasonCompleteMatch.finished (league) → Match.viewLeagueTable vs Match.returnToMenuSettings.legalOpened → Settings.linkOpenedAnalytics are anonymous and documented in PRIVACY.md. No IDFA, no account IDs, no free-text user content.
See APP-STORE.md for the mapping to Apple’s questionnaire.
AppAnalytics.swiftPixelPitch/PixelPitchApp.swiftPixelPitch/Game/AppAnalytics.swiftPixelPitch/ContentView.swiftPixelPitch/Views/MatchContainerView.swiftPixelPitch/Views/LeagueHubView.swiftPixelPitch/Views/SettingsView.swift, LegalDocumentView.swift