Releases

29 posts

iOS SDKReleases

iOS SDK v2.1.3

Version 2.1.3 of the Rdio iOS SDK includes the following improvement:

  • logout will no longer delete all cookies

Download the latest release, checkout the getting started guide, and let us know what you think.

∞  July 25, 2014 — 8:45AM

iOS SDKReleases

iOS SDK v2.1.2

Version 2.1.2 of the Rdio iOS SDK includes the following improvement:

  • Further protection from crashing when handling rdioRequest errors

Download the latest release, checkout the getting started guide, and let us know what you think.

∞  July 14, 2014 — 4:03PM

DocumentationReleasesWeb Service API

Stations Guide

Rdio Stations

Today we're releasing a guide to implementing stations along with ten new station API methods! You can now build the same great station experience into your applications and devices. If you're not already familiar: Rdio Stations provide easy, instant mixes for those who are in the mood to sit back and listen.

You can start stations based on genres, artists, albums, tracks and more. You can also listen to You FM for yourself, your friends, and Rdio influencers.

Give the new Stations API methods a try and let us know what you think.

∞  July 07, 2014 — 2:20PM

iOS SDKReleases

iOS SDK v2.1.1

Version 2.1.1 of the Rdio iOS SDK includes the following improvement:

  • Fix for crash when handling playback and access token retrieval errors

Download the latest release, checkout the getting started guide, and let us know what you think.

∞  June 26, 2014 — 3:07PM

iOS SDKReleases

iOS SDK v2.1.0

Version 2.1.0 of the Rdio iOS SDK includes the following improvements:

  • Improve the stability of seeking
  • seekToPosition: now calls delegate when changing playback state
  • Two new RDPlayerDelegate methods: rdioPlayerSetAudioCategory and rdioPlayerSetAudioSessionActive: for controlling the audio session
  • Reduce log level from warning to info for "Got NSNull for result" message

Download the latest release, checkout the getting started guide, and let us know what you think.

∞  June 10, 2014 — 10:41AM

Releases

Mac App v2.30: AppleScript Improvements

The v2.30 release of the Rdio Mac application contains several AppleScript improvements:

  • Player position should use seconds, not percentage (#80)
  • Ability to control repeat state (#47, #80)

Checkout the full AppleScript reference and download the Mac Desktop app. Continue reading for how to use the new functionality.

Examples

To seek to the 30-second mark:

tell application "Rdio"
    set player position to 30
end tell

To retrieve the current position in seconds:

tell application "Rdio"
    set playerPosition to player position
end tell

To control the repeat state:

tell application "Rdio"
    set repeat state to STATE
end tell

Where STATE can be: one (current track), all (current album or playlist), none.

∞  June 09, 2014 — 10:48AM

iOS SDKReleases

iOS SDK v2.0.1

Version 2.0.1 of the Rdio iOS SDK includes the following improvement:

  • Rename initPlayerWithDelegate: to preparePlayerWithDelegate: to prevent issues with ARC

Download the latest release, checkout the getting started guide, and let us know what you think.

∞  May 15, 2014 — 5:08PM

iOS SDKReleasesTips & Tricks

iOS SDK 2.0.0 Release and Migration Guide

Today we're releasing version 2.0.0 of the iOS SDK. As you might've guessed from the bump in major version number, this release contains some API changes that prevent it from being a total drop-in replacement. So, after we cover the changelog, we'll show you how to migrate your existing app over to the new version.

  • Support for 64-bit builds. #98
  • duration on RDPlayer is now KVO-compliant. #106
  • Fix seekToPosition: to defer seeks that occur before the buffer is ready. #65
  • Fix an infinite-retry bug that occurred when the last queued track was unstreamable in the user's region.
  • Completely remove deprecated authorizeUsingAccessToken:fromController: method.
  • Separate RDPlayer initialization from Rdio initialization. This means the player must be initialized explicitly, which prevents apps from automatically making Rdio API calls on app load.
  • Use NSError in delegate methods that involve errors. The errors returned will usually be from RDErrorDomain, and contain a code value from RDErrorCode.
  • Introduce two new methods to RDPlayer for observing playback position and SPL for the current track. These signatures are based on AVPlayer's method with a similar name:
    • -(id)addPeriodicTimeObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(CMTime time))block
      The passed in block is invoked periodically every interval on the queue specified. The passed in time parameter is the player's position in the current playing track.
    • -(id)addPeriodicLevelObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(Float32 left, Float32 right))block
      The passed in block is invoked periodically every interval on the queue specified. The passed in left and right parameters contain the channel's volume in decibels.
    • Support removing periodic observers with:
    • -(void)removeTimeObserver:(id)timeObserver
    • -(void)removeLevelObserver:(id)levelObserver

Migration Guide

Since every app is different, this migration guide won't cover every use case, but it should cover the basics.

Replace Rdio.framework with the new version

We start off with baby steps. Replacing the Rdio framework in your Xcode project should be straight forward — it's what you've had to do with 1.x updates anyways.

Add CoreMedia framework

The new version of the SDK introduces a dependency on CoreMedia.framework. To add it, select your app target and scroll down to the Linked Frameworks and Libraries section, and click the +. Type 'coremedia' into the search bar, and select CoreMedia.framework from the list. Xcode 5 should automatically add CoreMedia to the "Link With Binary Libraries" step in "Build Phases", but if you feel like double checking, head over there and do that.

At this point you should be able to build your app without hitting any linker errors, but you might still have some warnings around your delegates.

Update your RdioDelegate and RDPlayerDelegate objects

The signatures for -(void)rdioAuthorizationFailed:(NSError *)error and -(BOOL)rdioPlayerFailedDuringTrack:(NSString *)trackKey withError:(NSError *)error have changed to expect NSError objects instead of NSStrings. Find your implementations of these, update the method signatures, and have a look at the [RDErrorCode](LINK) enum to figure out which errors you should be checking for.

If your app does not incorporate playback, then congratulations! You're done! Otherwise, there's one more crucial step.

Initialize the Rdio Player

As we mentioned in the changelog, the RDPlayer object now requires explicit initialization. When and where you do this will depend on what your app is and how you expect your users to play music. We've done this in the Hello app after the main view controller loads, but if music playback isn't the main focus of your app, you may want to wait until the user has taken some action to indicate that they'll be listening soon.

The line you'll need to add is: [yourRdioInstance initPlayerWithDelegate:someRdioDelegate];

Note that your app should re-initialize the player after login to insure that the player doesn't accidentally contain any stray buffers of 30 second samples. Also note that re-initializing the player will create a new RDPlayer object, so you may need to update any local references to rdioInstance.player.

∞  May 14, 2014 — 11:15AM

iOS SDKReleases

iOS SDK v1.3.7

Version 1.3.7 of the Rdio iOS SDK includes the following improvement:

  • Fix a crash when canceling RDAuthViewController #118

Download the latest release, checkout the getting started guide, and let us know what you think.

∞  May 06, 2014 — 10:59AM

Android SDKReleases

Android SDK v2.0.1

Version 2.0.1 of the Rdio Android SDK includes the following improvement:

  • Fixed issue where music ceases to play after receiving a 404 when retrieving a track

Download the latest release, checkout the getting started guide, and let us know what you think.