You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Build a store (named SoTube) with the following functionalities:
the user can login to a personal account
each account contains points which can be bought with real money (the last part doesn’t need to be implemented)
there should be an overview of all purchases
once logged in, a user can buy songs with points
user needs to confirm purchase before continuing
once a song is bought, a user can play the full song
bought songs need to be in a personal database
when a user is not logged in (or didn’t yet buy the song), only a preview of the song is available (e.g. 30 sec)
songs can come from a server, SoundCloud, Spotify,… and accessed through their API
the app must run smoothly (async methodes and activity indicators)
the app must look good and work on every iOS device
you can choose to support landscape (although desirable)
Possible extras:
buying points (e.g. with PayPal)
sharing your purchase with friends (Facebook, Twitter,…)
possibility to search by name
possibility to sort
...
The SoTube app:
Loginscreen
the user can log in as a registered user or login as guest
recover its password
create a new account
Automatic login
If the user launches the app but has previously been logged in, the app will automaticaly log back in with the credentials given at the previous login. To prevent this, the user should log out before quiting the app.
Ways to enter the app
When a user logs in as guest, the user is immediatly directed to the store. The tabbar is customised to only show the store, a login button and a create account button.
When a user logs in as a registered guest and the user has no purchased songs yet, it is directed to the store as well, but with the default tabbar.
When a user logs in as a registered guest and the user has already bought songs, it is directed to their bought music.
The store
The user can browse through new releases, featured playlist and moods
The user can sumltaniously search for albums, artists, tracks and playlists and can navigate through them
In the store, the user can buy a song anywhere it is displayed. In a search result, an album, a playlist,...
When the user clicks on buy, a confirmation screen is shown. When the user buys the track, the buy option disappears.
When the user does not have enough coins an alert is shown with the option to top up their account or to cancel.
When the user choses to top up there account, the get the option to choose the amount of coins and is shown the price.
The user can choose to pay with PayPal. In PayPal, the user can log in to paypal and pay, or choose to use a credit card
My Music
by default, the user lands on albums, sorted by artist name but can be sorted by album name.
the user can choose to view all songs, all albums or all artists of their bought songs.
all songs can be sorted by name but are by default sorted by artist name>album name>album track number.
The display- and sort- menus on an iPad
The artist view with on the left all artists and on the right all bought albums of the selected artist.
The album view in portret
The album view in landscape
The Music Player
If the user taps a track, a miniplayer wil appear right on top of the tabbar at the buttom.
When in landscape the miniplayer will move into the tabbar to fill the unused space
The miniplayer will be present everywhere you are in the app. On it, the user can control the pause and play back of the song
When the user taps the miniplayer anywhere but the pause/play button, a bigger player will be shown fullscreen on the iphone.
On the iPad the bigger player will be shown as a popover. (Note that the volume control
is only available on a real device and will not be shown in the simulator)
When a song is not yet bought or the user in not logged in, the user can preview the song for 30sec.
If the song is not yet bought, the user can buy the song right in the player.
When the song is succesfully bought, the user can immediatly continue playing the entire song.
The user can also share the song they are playing immediatly from the player.
Sharing a song returns a message "I'm currently listening to [track title] by [artist name]" and a link to the current song on the only spotify player.
If there is an airPlay device in the vecinity, the user can also stream their music to the device and control its volume.
Account
At the account, the user gets an overview of the amount of songs bought, amount of coins left, the username and password and the ability to buy extra coins.
the user can change its username and to make sure, the user has to enter its old username and a new username
the user can change its password and before changing, there is a reauthentication to make sure it is the correct user
The user can also top up its account,
view a history of purchased songs,
and a history of purchased coins.
Database structure (Firebase, so NoSQL)
How to compile and run the app
Check installation
You will need Xcode and CocoaPods installed and a spotify account.
Do pod install to install all the needed pods.
Get a Spotify token
While running, you need a Spotify token to browse the Spotify songs. The Spotify API only returns a token valid for one hour. After one hour you have to get a new Token. And the API only supports one way to get a token. As it is a very disruptive process and not in realy in the scope of the project, we chose to implement it as follows:
1. When the app is fully loaded click on the SoTube icon above te login credentials.
2. This will open a spotify webpage in your default browser. Click on "Log in to Spotify"
3. and choose to log in with Facebook or a Spotify account
4. Click "Okay" if asked to connect SoTube to your Spotify account
5. Click "open" if asked to Open this page in "SoTube"?
6. Now you should be returned to the SoTube app and you can log in.
After one hour the token will not be valid any more so you will have to redo this process
If you automaticaly logged in before you could ask a token, go to account an log out first. Otherwise the app will crash on you
About
Final assignment iOS Developer course: Build a music store on iOS