Radioo | iOS Universal Multi-Radio Stations App Template (Swift)

Radioo | iOS Universal Multi-Radio Stations App Template (Swift)

Both iOS and Android version share the same Parse database on back4app

18 April 2018
• Replaced AdMob banners code with Interstitial ads in Home.swift, Stations.swift and Favorites.swift
• Completely reskinned the app with a new fresh and modern design
• Removed the NavigationBar from the NavigationController in Storyboard | added UIViews as top bars in the other Controllers, along with new custom Buttons and Labels
• Added a new Font folder with Quicksand fonts | changed the default fonts with that one in the Storyboard
• Created a "Stations" new class in the Parse Dashboard, so now you don't need to create any class for the music genres, all radio stations must be stored into the Stations class
• Edited Home.swift, Stations.swift and Favorites.swift files (compare your old swift files with the updated ones and perform the code changes)
• Added these lines in Configs.swift:
   let STATIONS_CLASS_NAME = "Stations" 
   let STATIONS_GENRE = "genre" 
   let STATIONS_FAVORITED_BY = "favoritedBy" 
    let FAVORITES_STATION_POINTER = "stationPointer" 

*** IMPORTANT: IF THIS IS AN UPDATE FOR YOU, then you should uncomment 'generateClassesAndColumns()' from viewDidLoad in Home.swift, run the app once and let it create a demo radio station and the "Stations" new class in your Parse Dashboard
After that, you need to create all your new rows for radio stations in the "Stations" class, you can copy URL and Name of your old radio stations from their classes, and the genre name of the cells of the 'genre' column must match the genre names you've inserted in the "Genres_" class. 
Once you're done, you can remove all music genre classes you've previously created (like Rock, Ambient, Jazz, etc.)
One more thing, you need to add a radio station to Favorites, then check the "Favorites" class in your Parse Dashboard, it'll have a new column called "stationPointer". This value is just the objectId of the favorited station from the "Stations" class, so if you have other rows in the "Favorites" class, they'll have the cells of the 'stationPointer' column empty [undefined]. You have to copy the objectId's of those radio stations and paste them in their relative cells, so the Favorites system will work smoothly.
3 April 2018
• Updated to recommended settings with Xcode 9.3
• Updated the 3 Facebook SDKs (because of Swift 4.1 release):
Dec 15th 2017
• Added a Facebook button in Login controller in Storyboard and its relative code in Login.swift, AppDelegate.swift and Info.plist, so you can now log in with Facebook too
• Updated the User Guide
• Added 4 new Frameworks in the Frameworks folder in Xcode relative to Facebook SDK:

Radioo is a Universal App template which stores free online radio stations into a flexible Parse Dashboard database hosted on all .m3u file links from You have to download the M3U files and extract the streaming URL from them, then simply paste them into your own Parse Dashboard to create playlists.
Please note that since this app plays music with AVPlayer, you can also play .pls or .mp3 files, the important thing is that the string of your link ends with .pls or .mp3.
You can play radio stations anywhere with a 3G or WiFi connection, add radios to favorites (login/signup required) and select your radio channels by Genre, and share the radio you’re listening to the world.

Since its backend is by Parse you don’t have to buy any domain/hosting, there are NO PHP files to upload to a web server so you’ll save some money for server side.

You may also use the, a free CMS panel for Parse SDK as a great alternative to insert/edit data in your Parse Dashboard, after you’ll create your app on back4app, create a free account on and create a new Panel, choose Self-hosted Parse Server and paste your Host link, Application ID and Master Key in the relative fields (you can find them into Core Settings of your back4app dashboard)

Radioo is very easy to customize, Storyboard, Universal, native XCode project, Swift language, Parse SDK backend.

About Parse SDK and back4app

Read this article for more info about back4app and Parse SDK:

Can I host Parse Server on my own server?

Yes, although I don’t provide support for the setup process, you can read the official Guide here:

I get a Code signing error in Xcode 8.x

That’s a bug of Xcode 8 with macOS Sierra, check this sample video to see how to fix it:

How to remove AdMob banner ads

Check this video out to see how to remove the code that shows AdMob banners: Keep in mind that you must repeat the shown steps for every .swift file that contains this line on the top:
import GoogleMobileAds

What about free support for this template?

I can offer free support for bugs encountered in the original code. Instead, if you’ve edited the code and messed something up with it, I may apply some fee to fix it either via TeamViewer or by checking your app project files directly on my computer.

Should I use the latest version of Xcode to edit this template?

Yes, I always update my apps to the latest version of the IDE.

  • XCode 9.x project – Swift – 64bit
  • Universal – iOS 8.0+ – Storyboard
  • AdMob banners
  • Works with Parse SDK hosted on back4app
  • Easily update your radio stations via your Parse Dashboard
  • PDF User Guide included
  • PSD graphics included
  • Easy to customize, well commented code

Have fun with Radioo, and don’t forget to rate it on your Downloads page!

Important Disclaimer: We’ve recently found out that some developers have bought our app templates, reskinned them just a bit and put them on sale on other source code markets smilar to CodeCanyon, saying that they developed and own such source codes.
That is a serious copyright infringement, developers who buy our templates are allowed to reskin and sell them as apps on the App Store (accordingly to the License type they’ve purchased a template for), but are not allowed to put our original source codes for sale on source code markets, including CodeCanyon. We will report developers who made copyright infringements to the competent authorities. Thanks.