Privacy Policy
Last updated: July 28, 2026
1. Overview
Flashing Light: Morse Trainer is a native training tool for iOS and Android from Osprey Applications LLC that helps mariners practice receiving, transmitting, and interpreting visual Morse signaling for U.S. Coast Guard flashing-light competency. This policy explains exactly what the app does and does not do with your information.
In short: all of your training content, drill activity, scores, statistics, and settings stay on your device. The app requires no account and no sign-in. The only information that leaves your device is purchase-related data, processed by the app store you bought through — Apple on iOS or Google Play on Android — and by our purchase-management provider, RevenueCat, solely so we can sell, validate, and restore the one-time “Full Access” purchase. The app contains no advertising, no cross-app tracking, and no third-party analytics or crash-reporting SDKs.
No accounts. No third-party analytics. No ads. Your training never leaves your device. Only purchase information is processed off-device, and only to manage the “Full Access” in-app purchase.
2. No Accounts or Sign-In
No user accounts, no sign-up, and no sign-in are required to use the app. The app does not ask for your name, email address, or any other identifying personal information in order to function.
3. What Stays on Your Device
The following is stored only on your device and is never transmitted to us:
- Training history and progress — your session attempts, item attempts, per-symbol mastery statistics, scores, and app settings are stored locally inside the app’s private storage on your device — SwiftData on iOS, a local database (Room) on Android. There is no cloud sync in this version and none of it is backed up to our servers.
- Bundled reference content — the app ships a read-only database of Morse symbols, signal items, drill templates, and PUB 102 / International Code of Signals reference entries. This content is identical for every user and read-only, and your interaction with it is never transmitted.
- App preferences — small interface defaults and a cached “Full Access” entitlement flag (so the app can read your purchase status instantly at launch) are kept in the platform’s local preference store — UserDefaults on iOS, DataStore on Android. A device keychain/keystore entry may hold an internal application key. None of these report data anywhere.
Uninstalling the app removes all of this on-device data.
4. What Leaves Your Device (Purchases)
The app is free to download and is monetized by a single one-time in-app purchase called “Full Access” ($9.99) — a non-consumable product on iOS and a one-time product on Google Play. Selling, validating, and restoring that purchase requires processing a limited amount of data off-device.
4.1 RevenueCat (purchase-management provider)
We use RevenueCat, a third-party purchase-management service, solely to sell, validate, and restore the one-time “Full Access” purchase and to determine your entitlement (whether you own Full Access). RevenueCat is the only component in the app that communicates over the network. Through RevenueCat, the following categories of data are processed:
- Purchases — purchase and transaction data and your entitlement status.
- Identifiers — an anonymous app-user identifier generated for purchase management. On iOS this may include the device-scoped identifier for vendor (Apple’s
identifierForVendor). The Android app configures RevenueCat in anonymous mode — no custom user identifier is set, nothing is linked to your identity — and it does not request the Android advertising ID. - Usage Data and Diagnostics — SDK usage and diagnostic information generated by the purchase SDK.
Data shared with RevenueCat is used only to manage your purchase and entitlement. It is not used for cross-app tracking and not used for advertising or ad attribution. The app declares no tracking and contains no advertising or ad-attribution SDKs.
4.2 Payment processing (Apple / Google Play)
Payments are processed by Apple through StoreKit on iOS, and by Google through Google Play Billing on Android; RevenueCat operates on top of whichever store applies. The developer never receives your payment method, billing address, or other identifying purchase details. The relevant store’s own privacy policy governs the payment itself.
5. Progress Export
With Full Access, you can export your training history. “Export progress” writes a JSON file (your sessions, attempts, mastery statistics, and settings) locally and hands it to the standard system share sheet (the iOS share sheet, or the Android share sheet via a secure in-app file provider). The app performs no cloud upload of this file — where you send or save it afterward is entirely your choice and outside the app’s privacy boundary.
6. Required-Reason API Usage (iOS)
The app’s privacy manifest declares its use of certain Apple “required-reason” APIs:
- UserDefaults — small interface defaults and the cached entitlement flag.
- File Timestamp
- Disk Space
- System Boot Time
None of these APIs are used to report data to the developer.
On Android there is no equivalent required-reason declaration. The Android app requests no runtime permissions at all — no camera, microphone, location, contacts, photos, or storage access — and does not request the Android advertising ID. Its only permissions are network access and billing, used solely by the purchase SDK to validate and restore your purchase.
7. No Advertising, Tracking, or Analytics
The app contains no third-party analytics, no crash-reporting SDK, and no marketing or attribution SDKs other than RevenueCat, which is used only for purchases. There is no advertising, and the app performs no cross-app tracking.
8. Children’s Privacy
The app is not directed to children under 13 and does not knowingly collect data from children. Because no personal data is collected by the developer, there is nothing about a child to access, correct, port, or delete.
9. Your Data Rights and How to Request Deletion
This section applies to Flashing Light: Morse Trainer, published by Osprey Applications LLC.
On-device data — you can delete it yourself, immediately
Your training history, session and item attempts, per-symbol mastery statistics, and settings are stored only on your device. Uninstalling the app permanently deletes all of it. We never receive this data, so there is nothing for us to delete on your behalf.
Purchase data — how to request deletion
If you purchased “Full Access”, a record of that purchase is held by the app store (Apple or Google Play) and by our purchase-management provider, RevenueCat. To request deletion of the record held by RevenueCat:
- Email ospreyapplicationsllc@gmail.com from the address associated with your purchase.
- Use the subject line “Data deletion request”.
- Include your store order ID or receipt number. On Google Play you can find this in the Play Store app under your profile → Payments & subscriptions → Budget & order history. On iOS it is in your Apple purchase receipt email.
We will acknowledge your request within 7 days and complete the deletion within 30 days.
What is deleted, what is kept
| Data | On request |
|---|---|
| RevenueCat purchase and entitlement record | Deleted |
| On-device training data, statistics, settings | Not held by us — removed when you uninstall the app |
| Store-side transaction records held by Apple or Google | Retained by that store under its own policy and applicable tax and accounting law; we cannot delete these on your behalf |
Please note: deleting your RevenueCat record also removes our ability to restore your “Full Access” purchase on a new device or after a reinstall. You would need to contact the app store directly for proof of purchase.
10. Data Security
On-device data is stored using the operating system’s built-in app sandbox and security mechanisms. Purchase data in transit to RevenueCat and to the app store (Apple or Google Play) is encrypted in transit (HTTPS/TLS) and protected by their respective systems.
11. Changes to This Policy
We may update this privacy policy from time to time. We will post the revised policy here and update the “Last updated” date above. Material changes that affect how data is handled will be reflected in this document.
12. Contact
For privacy questions, contact us at: