Skip to content

Commit 4607390

Browse files
committed
Update README with modern content, new screenshots, and CI badges
1 parent 3a47b77 commit 4607390

3 files changed

Lines changed: 55 additions & 89 deletions

File tree

.github/FUNDING.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
github: [fethica]
2+
custom: ['https://www.paypal.me/fethicaEH']

README.md

Lines changed: 53 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,121 +1,85 @@
11
# Swift Radio
22

3-
Swift Radio is an open source radio station app with robust and professional features. This is a fully realized Radio App built entirely in Swift. **master is now the Xcode 14 branch**.
3+
[![iOS build](https://github.com/analogcode/Swift-Radio-Pro/actions/workflows/ios.yml/badge.svg)](https://github.com/analogcode/Swift-Radio-Pro/actions/workflows/ios.yml)
4+
[![CarPlay build](https://github.com/analogcode/Swift-Radio-Pro/actions/workflows/carplay.yml/badge.svg)](https://github.com/analogcode/Swift-Radio-Pro/actions/workflows/carplay.yml)
45

5-
There are over 80 different apps accepted to the app store using this code!
6+
Open-source radio station app built entirely in Swift. Used by **80+ apps** on the App Store.
67

78
<p align="center">
8-
<img alt="Swift Radio" src="https://fethica.com/assets/img/web/swift-radio.jpg">
9+
<img alt="Swift Radio" src="swift-radio-preview.png" width="700">
910
</p>
1011

11-
## Video
12-
View this [**GETTING STARTED VIDEO**](https://youtu.be/m7jiajCHFvc).
13-
It's short & sweet to give you a quick overview.
14-
Give it a quick watch.
15-
1612
## Features
1713

18-
- Ability to update Stations from server or locally. (Update stations anytime without resubmitting to app store!)
19-
- Displays Artist, Track & Album Art on Lock Screen
20-
- Custom views optimized for SE, 6 and 6+ for backwards compatibility
21-
- Compiles with Xcode 14 & Swift 5
22-
- Parses JSON using Swift Codable protocol
23-
- Background audio performance
24-
- Search Bar that can be turned on or off to search stations
25-
- Supports local or hosted station images
26-
- "About" screen with ability to send email & visit website
27-
- Pull to Refresh stations
28-
- Uses the AVPlayer wrapper library [FRadioPlayer](https://github.com/fethica/FRadioPlayer):
29-
* Automatically download Album Art from iTunes API
30-
* Parses metadata from streams (Track & Artist information)
31-
- Uses [Spring](https://github.com/MengTo/Spring) library:
32-
* Animate UI components
33-
* Download and cache images using ImageLoader class
34-
35-
## Credits
36-
- **Co-organizer & current-lead developer [Fethi El Hassasna](https://fethica.com), Twitter: [@fethica](https://twitter.com/fethica)**
37-
- **Created by [Matthew Fecher](http://matthewfecher.com) from [AudioKit Pro](https://audiokitpro.com), Twitter: [@analogMatthew](http://twitter.com/analogMatthew)**
38-
- *Contributions by others listed in Github [here](https://github.com/swiftcodex/Swift-Radio-Pro/graphs/contributors).*
39-
Thanks to everyone! We couldn't do it without you!
40-
41-
## Requirements
42-
43-
- Xcode 14
44-
- Know a little bit of how to program in Swift with the iOS SDK
45-
46-
Please note: I am unable to offer any free support or modifications. Thanks!
47-
48-
## Creating an App
49-
50-
If you create an app with the code, or interesting project inspired by the code, shoot me an email. I love hearing about your projects!
14+
- Stream live radio with background audio playback
15+
- Scrubber and progress bar for non-live streams
16+
- Apple CarPlay support
17+
- Album art and track metadata from streams and iTunes API
18+
- Lock screen and Control Center integration
19+
- Multiple stations from a local or remote JSON file
20+
- Pull to refresh and optional search bar
21+
- Localization-ready via Xcode String Catalog
22+
- About screen with email, sharing, and external links
5123

52-
This is just a basic template. You may use it as a clean starting point to add other features.
24+
Built on [FRadioPlayer](https://github.com/fethica/FRadioPlayer) for streaming, metadata parsing, and iTunes album art fetching.
5325

54-
Some of the things I've built into this Radio code for clients include: Facebook login, Profiles, Saving Favorite Tracks, Playlists, Genres, Spotify integration, Enhanced Streaming, Tempo Analyzing, etc. There's almost unlimited things you can use this code as a starting place for. I keep this repo lightweight. That way you can customize it easily.
26+
## Getting Started
5527

56-
## Setup
28+
1. Open `SwiftRadio.xcodeproj` in Xcode
29+
2. Edit `SwiftRadio/Config/Config.swift` to set your stations URL, contact email, website, and other app-wide settings
30+
3. Update your stations in `SwiftRadio/Data/stations.json` or host the file remotely
31+
4. Build and run
5732

58-
The "Config.swift" file contains some project configs to get you started.
59-
Watch this [Getting Started Video](https://youtu.be/m7jiajCHFvc) to get up & running quickly.
33+
### Station Format
6034

61-
## Integration
35+
Each station in `stations.json` supports the following fields:
6236

63-
Includes full Xcode Project to jumpstart development.
37+
```json
38+
{
39+
"name": "Station Name",
40+
"streamURL": "https://stream.example.com/live",
41+
"imageURL": "station-image",
42+
"desc": "Short tagline",
43+
"longDesc": "Longer description for the detail screen",
44+
"website": "https://example.com"
45+
}
46+
```
6447

65-
## Stations
48+
Images can be local (asset name without `http`) or remote (full URL).
6649

67-
Includes an example "stations.json" file. You may upload the JSON file to a server, so that you can update the stations in the app without resubmitting to the app store. The following fields are supported in the app:
50+
### Customizing Text and Translation
6851

69-
- **name**: The name of the station as you want it displayed (e.g. "Sub Pop Radio")
52+
All user-facing strings are managed through `Localizable.xcstrings` (the String Catalog). Open it in Xcode to change the default English text or add new languages — no code changes required.
7053

71-
- **streamURL**: The url of the actual stream
54+
## Dependencies
7255

73-
- **imageURL**: Station image url. Station images in demo are 350x206. Image can be local or hosted. Leave out the "http" to use a local image (You can use either: "station-subpop" or "http://myurl.com/images/station-subpop.jpg")
56+
- [FRadioPlayer](https://github.com/fethica/FRadioPlayer) — streaming and metadata
57+
- [LNPopupController](https://github.com/LeoNatan/LNPopupController) — now playing popup bar
58+
- [NVActivityIndicatorView](https://github.com/ninjaprox/NVActivityIndicatorView) — loading indicators
59+
- [MarqueeLabel](https://github.com/cbpowell/MarqueeLabel) — scrolling text labels
7460

75-
- **desc**: Short 2 or 3 word description of the station as you want it displayed (e.g. "Outlaw Country")
61+
All managed via Swift Package Manager.
7662

77-
- **longDesc**: Long description of the station to be used on the "info screen". This is optional.
63+
## Contributing
7864

79-
## Contributions
65+
Contributions are welcome. Please branch off [`dev`](https://github.com/analogcode/Swift-Radio-Pro/tree/dev) and open a pull request — do not commit directly to `master`.
8066

81-
Contributions are very welcome. Please check out the [dev branch](https://github.com/analogcode/Swift-Radio-Pro/tree/dev), create a separate branch (e.g. features/3dtouch). Please do not commit on master.
67+
## Single Station Version
8268

83-
## FAQ
69+
Looking for a simpler, single-station version of this app? We offer a ready-to-go codebase for **$50** — no extra fees.
8470

85-
Q: Do I have to pay you anything if I make an app with this code?
86-
A: Nope. This is completely open source, you can do whatever you want with it. It's usually cool to thank the project if you use the code. Go build stuff. Enjoy.
71+
PayPal [fethica@me.com](mailto:fethica@me.com) or use [PayPal.Me](https://www.paypal.me/fethicaEH), and we will send the code within 24 hours with setup instructions. All funds support the project.
8772

88-
Q: How do I make my app support ipv6 networks?
89-
A: For an app to be accepted by Apple to the app store as of June 1, 2016, you CAN NOT use number IP addresses. i.e. You must use something like "http://mystream.com/rock" instead of "http://44.120.33.55/" for your station stream URLs.
73+
For custom work or more advanced needs, reach out to [Fethi](mailto:contact@fethica.com).
9074

91-
Q: Is there an example of using this with the Spotify API?
92-
A: Yes, there is a branch here that uses it [here]( https://github.com/swiftcodex/Swift-Radio-Pro/tree/avplayer) (⚠️ **deprecated**).
75+
**Built something with Swift Radio?** We'd love to see it — drop us a line at [contact@fethica.com](mailto:contact@fethica.com).
9376

94-
Q: Is there another API to get album/track information besides LastFM, Spotify, and iTunes?
95-
A: Rovi has a pretty sweet [music API](http://prod-doc.rovicorp.com/mashery/index.php/Data/APIs/Rovi-Music). The [Echo Nest](http://developer.echonest.com/) has all kinds of APIs that are fun to play with.
96-
97-
Q: I updated the album art size in the Storyboard, and now the sizing is acting funny?
98-
A: There is an albumArt constraint modified in the code. See the "optimizeForDeviceSize()" method in the NowPlayingVC.
99-
100-
Q: My radio station isn't playing?
101-
A: Paste your stream URL into a browser to see if it will play there. The stream may be offline or have a weak connection.
102-
103-
Q: Can you help me add a feature? Can you help me understand the code? Can you help with a problem I'm having?
104-
A: While I have a full-time job and other project obligations, I'd highly recommend you find a developer or mentor in your area to help. The code is well-documented and most developers should be able to help you rather quickly. While I am sometimes available for paid freelance work, see below in the readme, **I am not able to provide any free support or modifications.** Thank you for understanding!
105-
106-
Q: The song names aren't appearing for my station?
107-
A: Check with your stream provider to make sure they are sending Metadata properly. If a station sends data in a unique way, you can modify the way the app parses the metadata, in the `RadioPlayer` class implement `FRadioPlayerDelegate` method: `radioPlayer(_ player: FRadioPlayer, metadataDidChange rawValue: String?)`.
108-
109-
## Get Single Station Code
110-
If you'd like to support this project, co-organizer Fethi has created a well-architected single station version of this code. It's a super great bargain: The developers behind this project typically charge up to $200/hr for freelance work, but this fully working code is only $50. No extra fees.
111-
112-
You can PayPal: [fethica@me.com](mailto:fethica@me.com) or use this link: [Paypal Me](https://www.paypal.me/fethicaEH)
113-
We will send you the code after 24 hours with setup instructions. All funds go to support the project.
114-
115-
**Need something more advanced?** We have recent experience building iOS apps for high-profile brands. Send a friendly email to [Matthew](mailto:matthew@audiokitpro.com) or [Fethi](mailto:contact@fethica.com).
77+
## Credits
11678

79+
- [Fethi](https://fethica.com) — co-organizer and lead developer
80+
- [Matthew Fecher](http://matthewfecher.com) — creator, [AudioKit Pro](https://audiokitpro.com)
81+
- [All contributors](https://github.com/analogcode/Swift-Radio-Pro/graphs/contributors)
11782

118-
## RadioKit SDK Example
83+
## License
11984

120-
- You can use this Swift code as a front-end for a more robust streaming backend.
121-
- Brian Stormont, creator of RadioKit, has created a branch with the professional [RadioKit](http://stormyprods.com/products/radiokit.php) SDK already integrated. **Plus, his branch adds rewind & fast forward stream playback.** This is an excellent learning tool for those who are interested in seeing how a streaming library integrates with Swift Radio Pro. View the [branch here](https://github.com/MostTornBrain/Swift-Radio-Pro/tree/RadioKit).
85+
Swift Radio is open source and available under the [MIT License](LICENSE).

swift-radio-preview.png

759 KB
Loading

0 commit comments

Comments
 (0)