Features introduced
- Bitcode still not working on beta 14 #511
- Missing bitcode #493
- Bitcode support #445
Bugs fixed
- Crashes related to runbackgroundloop #585
- Crash in SPTPlaylistSnapShot #571
- Crash SPTAudioStreamingController runBackgroundLoop #541
- Crash in dealloc of SPTAudioStreamingController
New features
- This SDK now supports bitcode!
Bugs fixed
- Work done around Wifi to 3G switching issues. related tickets: #409 #420 #479 .
New features
- This SDK now uses Spotify iOS app to obtain access tokens using your app's bundle id. For more information see registering your bundle ID
Bugs fixed
- This release fixes the issue : "SPTAuth canHandleURL is crashing with NSInvalidArgumentException" (Issue #372)
Bugs fixed
- This release fixes the problem following issues.
(Issue #472) (Issue #409)
Bugs fixed
- This release fixes the problem where Apple would reject your App in App Store due the app showing pages where you can purchase Spotify outside of App Store.
Bugs fixed
- This release fixes SDK crash/instability due to poor/no network. Method [NSJSONSerialization JSONObjectWithData:options:error:] can not take nil data and will crash the app when fetching playlist.
(Issue #380) (Issue #374) (Issue #331)
Bugs fixed
- This release fixes one breaking authentication issue that was introduced when the latest Spotify Application was rolled out. (Issue #357)
What's New
-
Most metadata methods inside
SPTRequest
have been moved into their respective container classes, likeSPTTrack
,SPTFollow
,SPTYourMusic
etc. -
Most metadata objects like
SPTTrack
,SPTAlbum
andSPTPlaylistSnapshot
now provide separate request creation and response parsing functions. This will allow you to use custom libraries likeAFNetworking
to manage your HTTP requests, also allowing for better caching and throttling of the requests. These methods also take an access token string instead of aSPTSession
object. (Issue #92) -
More following api's implemented in
SPTFollow
andSPTPlaylistSnapshot
which allows for subscription to someone else's playlists. (Issue #278) (Issue #22) -
Lots of null pointer exceptions, unrecognised selectors and similar bugs should now be fixed. (Issue #296) (Issue #280) (Issue #257) (Issue #219)
-
Many methods now supports a market parameter providing backend filtering of available tracks. (Issue #295)
-
Appledoc comments improved, you might even find some examples in there.
Bugs fixed
-
Playback related issues. (Issue #317) (Issue #297) (Issue #214) (Issue #194)
-
URL encoding issues. (Issue #292) (Issue #284)
-
"Appears on" album type properly supported by
SPTAlbum
. (Issue #277) -
SPTAuthViewController bugs. (Issue #302) (Issue #271) (Issue #267)
-
Misc XCode warning. (Issue #276) (Issue #264)
-
Misc old bugs that seems to be mitigated recently. (Issue #143)
What's New
-
A wrapper that allows for having the login flow inside your app without bouncing out through Safari and back has been added - it's called
SPTAuthViewController
and the sample application has been updated to make use of this. (Issue #198) -
The web page which does the actual authentication does not contain any links to signup which blocked a few from releasing with the previous version on the AppStore. (Issue #242)
-
You can now request items that are available in a specific market, or the market of the current user. This should get rid of all unplayable tracks if there's an alternative available.
-
Some methods in
SPTAudioStreamingController
has been marked as deprecated in favor of a future simpler API. -
Authentication information can now be persisted by
SPTAuth
, it also provides a singleton to make it even more easy.
Bugs fixed
-
You can search for playlists. (Issue #227)
-
You can now get playlists for other users. (Issue #241)
-
Crashes due to null/unavailable values should be solved. (Issue #172) (Issue #251) (Issue #218) (Issue #210)
-
You can now seek immediately when starting playback. (Issue #190)
-
KVO observing works on more properties. (Issue #157)
What's New
-
You are now allowed to release apps based on this version in the App Store.
-
Removed the Release Candidate flag - please be aware that some API calls may change before final release.
-
Improved playback stability, better error handling for lossy network connections and when switching between Wi-Fi and cellular networks.
-
Added events to notify the app about connectivity changes.
-
Added methods for New releases / Featured playlists. (Issue #165)
-
Example token swap service is now stateless and stores an encrypted refresh token in your app instead of on the server, no more SQLite. (Issue #159) (Issue #155)
-
All models are updated to include the fields returned by the current Web API.
-
More control over track queueing and the currently queued tracks.
-
New events for which tracks starts and stops playing, not only when track changes.
-
SPTAudioStreamingController
constructor has changed to require a Client ID instead of optional company/appname.
Bugs fixed
-
SPTSession
now contains an encrypted refresh token. (Issue #155) -
Simple Track Playback example updated. (Issue #154)
-
skipNext
doesn't jump over tracks anymore. (Issue #152) -
Renamed 'public' in selector for Swift users. (Issue #141)
-
seekToOffset now works in play callbacks. (Issue #135)
-
Playlists with local tracks crashes. (Issue #132)
-
Scope constants lacking Scope suffix. (Issue #129)
-
queueURI:clearQueue
not clearing queue. (Issue #126) -
playTrackProvider:fromIndex
not skipping to correct track. (Issue #124) -
Create playlist returned bad request. (Issue #123) (Issue #137)
-
Exception thrown parsing playlist response. (Issue #121)
-
Lots of stability and playback issues fixed to the playback code.
-
You can now start playing a playlist from other than the first track.
** Known issues **
- Reading
shuffle
/repeat
properties within thedidChangeShuffleStatus
/didChangeRepeatStatus
callbacks might return the wrong value, but the values passed to the callbacks are correct.
What's New
-
We merged the functionality of the
SPTTrackPlayer
intoSPTAudioStreamingController
, giving you proper support for gapless playback, shuffle, etc. -
You can now remove tracks from playlists. (Issue #2)
-
Shuffle is properly supported. (Issue #25)
-
The examples are background-audio enabled. (Issue #35)
-
You can now call a Logout function explicitly. (Issue #42)
-
Multi-get functionality for Tracks, Albums, Artists and Playlists. (Issue #66)
-
You can add multiple tracks to playlists at once. (Issue #118)
-
A couple of easter eggs.
Bugs Fixed
-
Follower count is returned for playlists. (Issue #57)
-
Images, external urls and description is returned for playlists.
-
You get a notification when a track was skipped because it's unavailable. (Issue #102)
-
currentPlaybackPosition
is properly reset on track change. (Issue #112) -
SPTAuthUserReadPrivateScope
is defined. (Issue #116) -
SPTAudioStreamingController
completion block is called correctly. (Issue #117) -
Partial track, album and artist return properties that were missing. (e.g. available territories and external urls.)
What's New
-
Added support for the "Implicit Grant" authentication flow. This flow doesn't require a Token Swap Service, but sessions only last an hour and you'll have to re-authenticate the user via Safari.
-
Audio is now cached to storage during playback, improving the playback experience significantly. See the new
SPTAudioStreamingController
APIs for controlling the cache (Issue #68). -
Added support for the "Your Music" feature with the following APIs on
SPTRequest
:+savedTracksForUserInSession:callback:
to get a user's saved tracks.+saveTracks:forUserInSession:callback:
to save new tracks.+removeTracksFromSaved:forUserInSession:callback
to un-save tracks.+savedTracksContains:forUserInSession:callback
to check if track(s) are saved without downloading the whole list.
(Issue #5).
-
Added
[SPTArtist -requestRelatedArtists:callback:]
to request an artist's related artists. -
Added
[SPTPlaylistSnapshot -setTracksInPlaylist:withSession:callback:]
-
Added
[SPTPlaylistSnapshot -changePlaylistDetails:withSession:callback:]
(Issue #67).
Bugs Fixed
-
Bitrate constants are documented correctly (Issue #86).
-
Playback error codes are documented correctly (Issue #91).
-
Creating playlists now works correctly (Issue #90).
-
SPTListPage
objects returned from search requests now return correct results when calling-requestNextPageWithSession:callback:
(Issue #87). -
[SPTAudioStreamingController -seekToOffset:callback:]
now works correctly when called within the-playURI:
callback block (Issue #70). -
The library now works in the 64-bit iOS Simulator (Issue #11).
-
The
[SPTAudioStreamingController -currentTrackMetadata]
property now correctly returns metadata (Issue #101). -
Scopes are now working properly (Issue #99).
What's New
-
SPTAuth
andSPTSession
has been completely rewritten to use the new Spotify authentication stack. This means that you need to re-do your auth code. Additionally, the Client ID and Client Secret provided with earlier betas will no longer work. See the main readme for more information (Issue #3).-
The Basic Auth demo project has been rewritten to be much more friendly for new users to understand what's going on.
-
You'll need to update your Token Swap Service for the new auth flow. A new example is provided with the SDK.
-
-
Added
SPTArtist
convenience getters for albums and top lists:-requestAlbumsOfType:withSession:availableInTerritory:callback:
and-requestTopTracksForTerritory:withSession:callback:
(Issue #44, Issue #34). -
Added ability to get the user's "Starred" playlist using
SPTRequest
's+starredListForUserInSession:callback:
method (Issue #15). -
Various API changes and additions to metadata objects. In particular, users may be interested in the availability of album art on
SPTPartialAlbum
and track count and owner properties onSPTPartialPlaylist
(Issue #23). -
SPTAudioStreamingController
now has a customisable streaming bitrate. -
Added ability to get detailed information about the logged-in user using
SPTRequest
's+userInformationForUserInSession:callback:
method (Issue #40). -
Added
SPTListPage
class to deal with potentially large lists in a sensible manner. Objects with potentially long lists (playlist and album tracks lists, search results, etc) now return anSPTListPage
to allow you to paginate through the list.
Bugs Fixed
-
Core metadata classes now work properly (Issue #52 and a bunch of others).
-
Delegate methods are now marked
@optional
(Issue #41). -
Playlists not owned by the current user can be requested as long as your application has permission to do so (Issue #10).
-
SPTAudioStreamingController
now calls theaudioStreaming:didChangeToTrack:
delegate method with anil
track when track playback ends (Issue #21). -
SPTAudioStreamingController
is more aggressive at clearing internal audio buffers (Issue #46). -
SPTAudioStreamingController
no longer crashes on 64-bit devices when calling certain delegate methods (Issue #45). -
SPTAuth
no longer crashes when handling an auth callback URL triggered by the user pushing "Cancel" when being asked to log in (Issue #38). -
Included .docset now correctly works with Xcode and Dash (Issue #12).
What's New
-
Special release for Music Hackday Paris. Hi, hackers!
-
SPTAudioStreamingController
now allows initialization with a custom audio output controller (Issue #19). -
SPTTrackPlayer
now has an observablecurrentPlaybackPosition
property (Issue #28). -
Various API changes and additions to metadata objects. In particular, users may be interested in the availability of album art on
SPTAlbum
, artist images onSPTArtist
and 30 second audio previews onSPTTrack
(Issue #1). -
The Simple Track Player example project now shows cover art in accordance with the above.
Bugs Fixed
-
SPTAudioStreamingController
now more reliably updates its playback position when seeking (Issue #33). -
SPTTrackPlayer
now respects the index passed into-playTrackProvider:fromIndex:
(Issue #14). -
NSError
objects caused by audio playback errors are now more descriptive (Issue #8).
Known Issues
-
Building for the 64-bit iOS Simulator doesn't work.
-
For other open issues, see the project's Issue Tracker.
What's New
- Initial release.
Known Issues