Kovan Apps Yazılım Ltd. Şti. (“Company”, “we”, “us”, or “our”) built the ATC Radio app (the “App”) for Google Play (Android) and the Apple App Store (iOS). The App streams publicly available air traffic control (ATC) audio from third-party volunteer relay servers, and adds a live AI transcript, session summaries, an audio enhancer, and local recordings. Listening is free and supported by ads; the extra features are unlocked with an optional subscription or one-time purchase.
This page explains what information is collected, why, and how long it is kept. By using the App you agree to the practices described here.
The App has no registration: no email address, no password, no phone number, no name. Your device is identified only by an anonymous Firebase Authentication ID, created on first launch. It identifies a device installation, not a person. You can see this value in the App under Settings → About → Customer ID; it is the reference to quote if you ask us to delete your data.
The App uses the following services, which may process limited technical information:
| Service | Purpose | Platform |
|---|---|---|
| Google Play Services | Core device services | Android |
| Firebase Authentication (Anonymous) | Anonymous device ID for backend authentication | Android & iOS |
| Firebase Cloud Functions | Every backend request — catalog, stream address, transcript, insights. The App has no direct database access. | Android & iOS |
| Cloud Firestore | Airport/channel catalog, transcript lines, session records, usage quotas | Android & iOS |
| Firebase App Check | Abuse prevention (device attestation) | Android & iOS |
| Firebase Remote Config | Feature flags and limits | Android & iOS |
| Google Analytics for Firebase | Aggregate, anonymous usage statistics | Android & iOS |
| Firebase Crashlytics | Crash reporting and stability monitoring | Android & iOS |
| RevenueCat | Subscription and purchase validation, restore purchases | Android & iOS |
| Google AdMob + User Messaging Platform | Ads for free users, and the consent form where consent is required | Android & iOS |
| Deepgram | Speech-to-text on the public radio channel audio, for the live transcript (Pro) | Server-side |
| Google Gemini API | Turns transcript text into a session summary (Pro) | Server-side |
| Third-party audio relay servers | Deliver the public ATC audio stream. Your device connects to them directly, so they receive your IP address and a standard connection request, exactly as with any internet radio. | Android & iOS |
| adsb.lol | Open ADS-B network (ODbL) that provides the aircraft positions on the Live Map. Your device requests this data directly while the Live Map is open, so adsb.lol receives your IP address. | Android & iOS |
Listening is free and supported by ads. Free users may see a single full-screen ad at natural breaks — after you have been listening for a while, when you switch channels or close the player. Ads are never shown while the player is opening, and the audio keeps playing behind the ad. Subscribers see no ads at all, and for a subscriber the ad SDK is never even started.
Location is optional and used for one thing: finding airports near you. When you allow it, your coordinates are sent to our Cloud Function, which returns the nearest airports in the catalog. The coordinates are used to answer that query and are not stored against your anonymous ID, not shared with advertisers, and not included in crash or analytics events. The App works fully without location — you can browse and search for any airport instead — and you can revoke the permission at any time in system settings.
Aircraft positions shown on the Live Map come from adsb.lol, an open ADS-B network (ODbL). When the Live Map is open, your device requests this data directly from adsb.lol, which receives your IP address like any website you visit. We do not send your identity, location or listening history with these requests. Route data comes from the Virtual Radar Server standing-data project (CC0).
The transcript is produced from the public radio channel, not from you. Our server receives the channel audio, sends it to Deepgram for speech-to-text, and stores the resulting lines per channel — the lines belong to the channel everyone is listening to, not to your account.
Recordings are written to your device’s app storage and stay there. They are never uploaded to us or to anyone else. Deleting a recording in the App, or uninstalling the App, removes it permanently.
Payment is handled entirely by Apple or Google; we never see or store card numbers or billing details. RevenueCat receives your anonymous ID and the store receipt to validate your subscription and to support “Restore purchases”.
If you use the in-app feedback form, your message is sent together with a small technical context so we can reproduce the problem: device model and OS version, whether you are free or Pro, the channel you last played (name, ID, airport, frequency), an anonymized token for the stream server, whether notifications are enabled, and simple usage counters (app opens, total listening minutes, favorites added).
The App may ask to show notifications so it can tell you when a live transcript pauses. These are generated locally on your device. We do not send push notifications and the App does not register for a push token.
Firebase Crashlytics collects crash reports (device model, OS version, technical state at the time of the crash). Google Analytics for Firebase records aggregate usage events such as app opens, channel plays, transcript starts and purchases. Playback problems are reported as anonymized events (channel ID, error class, an anonymized token for the stream server) so we can see when a source is broken. None of this carries personal content or location, and it is tied to an anonymous app-instance identifier.
All communication uses HTTPS/TLS. Every backend operation goes through authenticated Cloud Functions protected by Firebase App Check and request signing; the App has no direct database access. Tokens are stored in the platform’s encrypted storage (Android EncryptedSharedPreferences, iOS Keychain). No method of transmission or storage is 100% secure, and we cannot guarantee absolute security.
| Data | Kept for |
|---|---|
| Favorites, recently played, insight history on the device | Until you delete them or uninstall |
| Recordings | On device only, until you delete them or uninstall |
| Transcript lines (per channel, on our server) | About 1 hour |
| Session insights (with anonymous ID) | 90 days |
| Transcription session records and quota counters | 7 days / rolling daily counters |
| Playback error events | 14 days |
| Subscription state cache | Refreshed continuously; removed on request |
| Crash logs | Up to 90 days (Firebase) |
| Analytics events | Up to 14 months (Google Analytics for Firebase) |
| Purchase records | Per RevenueCat / Apple / Google policies, to support restore |
Contact info@kovanapps.com with your Customer ID (Settings → About → Customer ID). We respond within 30 days.
We may update this Privacy Policy from time to time. Changes are posted on this page and are effective immediately upon posting.
Kovan Apps Yazılım Ltd. Şti.
Üniversiteler Mah. 1597 Cad. No: 3/127 Bilkent, Çankaya, 06800 Ankara, TR
Email: info@kovanapps.com
Response Time: Within 30 days