Privacy Policy for TuneTransit
Effective Date: May 29, 2025
This Privacy Policy describes how Anthony Farino ("Developer", "we", "us", or "our") collects, uses, and handles your information when you use the TuneTransit mobile application (the "App") and its related services, including the iMessage Extension and Share Extension.
1. Information We Collect
We collect information necessary to provide and improve the core functionality of TuneTransit. The types of information include:
- Music Service Information:
- Spotify: When you connect your Spotify account, we securely store authentication tokens (access and refresh tokens) provided by Spotify in your device's Keychain. This allows the App to interact with Spotify on your behalf (e.g., fetch playback state, search for tracks/albums/playlists, create playlists, and retrieve your Spotify User ID). Your Spotify User ID is also stored in the Keychain to facilitate playlist operations. We do not store your Spotify password.
- Apple Music: The App requires permission to access your Apple Music library and activity to perform conversions originating from Apple Music, fetch catalog details for matching songs/albums/playlists (including ISRC and UPC codes where available), display playback state, and provide discovery features based on your listening history. This access is managed through standard iOS permissions.
- User-Provided Information:
- URLs: Music links (for songs, albums, or playlists) that you manually enter, paste from the clipboard, or share with the App via the Share Extension or iMessage Extension.
- Search Queries: Text you enter when searching for music within the app or its extensions.
- Conversion & Usage Data:
- Music Metadata: Details about the music being converted (song title, artist, album, artwork URL, ISRC/UPC codes where available, duration) and the resulting links for the destination platform are processed during conversion.
- Conversion History: A history of your successful conversions (including metadata like song title, artist, album, artwork URL, platform links, and timestamp) is stored locally on your device using Core Data. This is used for features like the "History" tab and to inform recommendations in the "Discover" tab.
- Saved Transfers: You can optionally save specific conversions. This saved data (similar to history data) is stored locally on your device using UserDefaults.
- Total Transfer Count: A counter for your total number of transfers is stored locally on your device using AppStorage for statistical display to you.
- Daily Transfer Limits (Free Tier):
- CloudKit: For users on the free tier ("TuneTransit Day Pass"), we use Apple's CloudKit technology to track daily transfer usage to enforce limits. We store a record in your private iCloud database containing your daily transfer count and the date the count was last reset. This record is associated with your iCloud User Record ID, but this ID is not directly stored or accessed by the Developer. This data resides within your personal iCloud space, managed by Apple, and is used solely for resetting the daily transfer limit. The Developer cannot directly view individual user counts stored in private iCloud databases.
- Nearby Sharing (Premium Feature):
- Multipeer Connectivity: If you use the Nearby Sharing feature, your chosen "Train Name" (device display name for the session) is broadcast to nearby TuneTransit users. When sharing, metadata of the music you are playing (song title, artist, artwork URL, platform links) is shared with connected peers. This data is transmitted directly between devices using Apple's Multipeer Connectivity framework and is not routed through our servers.
- Device and App Information (for API Key Validation):
- Backend Interaction: To securely fetch API keys necessary for app functionality (Spotify Client ID/Secret, YouTube API Key), the App communicates with our backend server. During this process, a unique identifier for your device (identifierForVendor) and the app version are sent to the server. This information is used solely for validating the request and logging access. The backend generates a short-lived JSON Web Token (JWT) based on your device ID, which the app then uses to request the API keys. These API keys are then stored securely in your device's Keychain.
- Purchase Information:
- StoreKit: If you make In-App Purchases (e.g., for TuneTransit Premium subscriptions or lifetime access), purchase status and history are processed and managed through Apple's StoreKit framework. We receive verification of purchase status (entitlement) but do not directly handle or store your payment information. Your entitlement status (e.g., "isPremium") may be stored in the shared Keychain to allow app extensions (like the iMessage app) to verify premium access.
- Clipboard Access:
- The app may detect music URLs on your clipboard when the app becomes active to suggest them for conversion. This check happens locally on your device. You can choose to use or ignore the suggestion.
2. How We Use Your Information
We use the collected information for the following purposes:
- To Provide App Functionality: Authenticating with music services, fetching music metadata, performing link/playlist conversions between Spotify and Apple Music, searching for matches across platforms (including searching YouTube for music videos), displaying your playback state, providing "Now Playing" quick transfer options.
- To Enable Core Features: Storing your conversion history and saved items, facilitating Nearby Sharing between users, enabling the Share Extension and iMessage Extension to process music links.
- To Manage Usage: Utilizing CloudKit in your private iCloud database to track and reset daily transfer counts for free tier users.
- To Personalize Experience: Providing discovery recommendations based on your conversion history.
- To Secure API Access: Using device identifiers and JWTs to validate requests for essential API keys from our backend. This helps protect our API quotas and ensure legitimate app usage.
- To Manage Purchases: Verifying and restoring In-App Purchases via StoreKit, and checking entitlement status for premium features.
- To Improve User Experience: Storing preferences like your default startup screen, remembering API keys securely in the Keychain.
3. Data Sharing and Third Parties
We do not sell your personal information. We share information only as necessary to provide the App's functionality or as required by law:
- Music Services (Spotify, Apple Music, YouTube):
- Spotify API: Information like song titles, artist names, album names, ISRCs, or UPCs are sent to the Spotify API to find matches, retrieve track/album/playlist details, and create playlists. Spotify authentication tokens and User ID are used to interact with Spotify on your behalf for these purposes.
- Apple Music API (MusicKit): Similar music metadata is used with Apple's MusicKit to find matches, retrieve details, and create playlists in your Apple Music library.
- YouTube API: When using the "Open in YouTube" feature, a search query (typically song title and artist) is sent to the YouTube Data API to find relevant music videos.
- Apple Services:
- CloudKit: As described above, for daily transfer limits on the free tier, data is stored in your private iCloud database, governed by Apple's iCloud terms and privacy policy.
- Keychain: Used for secure local storage of sensitive data like API keys, authentication tokens, and entitlement status.
- Core Data & UserDefaults: Used for local storage of conversion history and saved transfers on your device.
- StoreKit: Used for processing In-App Purchases.
- Multipeer Connectivity: Used for Nearby Sharing, facilitating direct peer-to-peer data transfer.
- Our Backend:
- Your device identifier (identifierForVendor) and app version are sent to our server solely to authenticate requests for API keys needed by the app. This data is logged for security and operational purposes but is not used for tracking you across other apps or services.
- Legal Requirements: We may disclose information if required by law, subpoena, or other legal process, or if we believe in good faith that disclosure is reasonably necessary to protect our rights, property, or the safety of our users or the public.
4. Data Storage and Security
We prioritize the security of your information:
- Local Storage: Conversion history is stored locally on your device using Core Data. Saved transfers and preferences (like default view, Nearby Sharing name) are stored using UserDefaults or AppStorage.
- Keychain: Sensitive data such as Spotify authentication tokens, your Spotify User ID, third-party API keys (Spotify, YouTube), and your premium entitlement status are stored securely in your device's Keychain. This includes storage in the shared Keychain to allow app extensions (TuneShare, TuneMessage) to access necessary credentials and check premium status.
- CloudKit (Private Database): Daily usage counts for free tier users are stored in your private iCloud database, which is encrypted and managed by Apple. The Developer does not have direct access to the content of your private iCloud database.
- Backend Server: Our backend server, which validates requests for API keys, employs security measures to protect the validation process. Device identifiers and app versions sent for this purpose are logged securely.
- Multipeer Connectivity: Data shared via Nearby Sharing is transmitted directly between devices and is encrypted by the Multipeer Connectivity framework.
- Security Measures: While we use industry-standard practices (like Keychain and HTTPS for backend communication) to protect information, no method of transmission over the Internet or method of electronic storage is 100% secure.
5. Your Rights and Choices
You have control over your information:
- Access and Deletion:
- Saved Transfers: You can view and delete your saved transfers from within the App.
- Conversion History: You can clear your entire locally stored conversion history via the App's Settings screen by selecting the app version 5 times consecutively.
- Spotify Account: You can disconnect your Spotify account in the App's Settings, which will remove the associated tokens from the Keychain. You can also manage app permissions directly in your Spotify account settings.
- CloudKit Data: Data stored in your private CloudKit database (daily usage counts) is managed via your iCloud account settings with Apple. The App does not provide a direct interface to delete these specific CloudKit records.
- Permissions:
- Apple Music: You can manage the App's access to your Media & Apple Music library at any time through your device's iOS Settings (Privacy & Security > Media & Apple Music).
- Clipboard: The app's access to suggest URLs from the clipboard is based on your interaction (e.g., when the app becomes active). You are not required to use this feature.
- Nearby Sharing: This feature is opt-in and requires you to explicitly start a sharing session. You can stop sharing at any time. Your "Train Name" for Nearby Sharing can be regenerated in the sharing details screen.
- Data Retention:
- Locally Stored Data: Conversion history and saved transfers are stored on your device until you choose to delete them.
- Keychain Data: API keys and tokens are stored until you disconnect services (e.g., Spotify logout) or the app is uninstalled.
- CloudKit Data: Daily usage counts are typically reset daily as per the feature's logic. Retention of these records within your private CloudKit database is subject to Apple's policies.
- Backend Logs: Logs on our backend server containing device identifiers for API key requests are retained for a limited period for security and operational analysis.
6. Changes to This Privacy Policy
We may update this Privacy Policy from time to time. We will notify you of any significant changes by posting the new Privacy Policy within the App and updating the "Effective Date" at the top. You are advised to review this Privacy Policy periodically for any changes.
7. Contact Us
If you have any questions about this Privacy Policy or our data practices, please contact us:
Developer: Anthony Farino
mail@tunetransit.app