A beautiful iOS app to listen to radio stations from around the world. Built with SwiftUI, powered by Radio Browser API, featuring on-device AI recommendations.
- 🌍 Worldwide Radio - Listen to 30,000+ radio stations from 200+ countries
- 🔊 High Quality Streaming - Support for various audio formats (MP3, AAC, OGG)
- 🎨 Beautiful UI - Dark/Light mode support with modern SwiftUI design
- ⏰ Sleep Timer - Auto-stop playback after a set time
- ❤️ Favorites - Save your favorite stations
- 🔍 Search - Find stations by name or country
- 📱 Background Audio - Continue listening when app is in background
- 🎛️ Lock Screen Controls - Control playback from lock screen
- 🔄 Multi-Server Support - Reliable connection with automatic server failover
WorldRadio/
├── App/ # App entry point
├── Models/ # Data models (Station, Country, UserData)
├── ViewModels/ # MVVM ViewModels
├── Views/ # SwiftUI Views
│ ├── Home/ # Country list
│ ├── Player/ # Mini & Full player
│ ├── Explore/ # Genre browsing
│ ├── Favorites/ # Saved stations
│ ├── Settings/ # App settings
│ └── Components/ # Reusable UI components
├── Services/ # API, Audio, ML services
├── Resources/ # Assets
└── Supporting/ # Info.plist
| Category | Technology |
|---|---|
| Framework | SwiftUI |
| Language | Swift 5.9 |
| Min iOS | iOS 17.0 |
| Architecture | MVVM |
| Audio | AVFoundation, AVPlayer |
| API | Radio Browser API |
| Storage | UserDefaults |
This app uses the free, open-source Radio Browser API:
- Base URLs: Multiple server endpoints for reliability
https://de1.api.radio-browser.info/jsonhttps://at1.api.radio-browser.info/jsonhttps://nl1.api.radio-browser.info/jsonhttps://fr1.api.radio-browser.info/json
- No API key required
- Rate limit: Fair use policy
- Automatic server failover
- 30-second timeout
- Broken station filtering
- Sorted by popularity (votes)
- macOS with Xcode 15+
- iOS 17.0+ for development
- Apple Developer Account (for device testing/deployment)
-
Clone the repository:
git clone https://github.com/Omerfiratgozutok/WorldRadio.git cd WorldRadio -
Generate Xcode project:
brew install xcodegen # if not installed xcodegen generate -
Open in Xcode:
open WorldRadio.xcodeproj
-
Run on Simulator:
- Select an iOS Simulator (iPhone 17 Pro recommended)
- Press
Cmd + Rto build and run
-
Select your team in Xcode:
- Go to
WorldRadiotarget →Signing & Capabilities - Select your Apple Developer Team
- Go to
-
Build for device:
- Select "Any iOS Device" in the device selector
- Press
Cmd + Bto build
-
Apple Developer Program - Enroll at developer.apple.com ($99/year)
-
App Store Connect - Create your app listing:
- App name: World Radio
- Bundle ID: com.worldradio.app
- Category: Music
-
Screenshots - Provide for:
- 6.5" iPhone (iPhone 14 Pro Max)
- 5.5" iPhone (iPhone 8 Plus)
-
Submit for Review - Use Xcode or Transporter app
- Background audio mode enabled
- iOS 17+ orientation support
- Dark mode default
- Media URL permissions for streaming
- Minimum iOS: 17.0
- Swift Version: 5.9
- Bundle ID: com.worldradio.app
| File | Description |
|---|---|
project.yml |
XcodeGen configuration |
Info.plist |
App configuration |
WorldRadioApp.swift |
App entry point |
RadioAPIService.swift |
Multi-server API client |
AudioPlayerService.swift |
Audio playback with background support |
MLRecommendationService.swift |
User preference learning |
Station.swift |
Radio station model |
Country.swift |
Country model with flags |
HomeView.swift |
Country list view |
PlayerViewModel.swift |
Audio playback state management |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Radio Browser API - Free radio station data
- Apple Developer - SwiftUI frameworks
- XcodeGen - Project generation
- All contributors and testers
Made with ❤️ for radio lovers worldwide
World Radio - Listen to the world 🎵