Certification Checklist

# Description Notes
1 Music Playback  
1.1 Tracks advance when the current track is complete Unless they are skipped or invalid, every track in the requested playlist must play.
1.2 Ability to pause/un-pause audio  
1.3 Ability to skip audio (unless skip limit reached).  
1.4 Track title, artist, album, album art appear on track display  
1.5 Skip limit per station, per hour is respected. Shows appropriate error message. Thumbs down also count towards the skip limit. Skip limit must persist after switching stations and back.
1.6 Device stops streaming when user is inactive for too long. (IdleTimeout) Device should react on IdleTimeoutItem and use errorDescription field to display the error to the user.
1.7 Now Playing screen displays the currently playing station name  
1.8 Station list screen indicates which station is currently playing  
1.9 Ability to play after long pause period (e.g. 1 hour)  
1.10 Pause/play audio should resume where the track was paused  
1.11 Missing album art shows a default image  
1.12 Audio cannot be rewound The client should never replay any portion of the stream that has already been played, unless SEEK, FORWARD_15_SECONDS, BACK_15_SECONDS is allowed by the interactions field for the current track
1.13 Thumbs up applies to the currently selected track  
1.14 Thumbs down applies to the currently playing track and skips the current track (unless skip limit reached) Client should use reponse of thumbs down to determine the next track to play, or if skip limit is reached, no action is needed except for handling the skip limit error.
1.15 Thumbs up/down not allowed for certain tracks The client should check for THUMB in the interactions field of the current track, and if it is present, allow thumb feedback on a track.
1.16 Thumbs indicator appear after a track is rated Use feedbackValue field to indicate previously rated tracks
1.17 Thumbs indicator appear on previously rated tracks Use feedbackValue field to indicate previously rated tracks
2 Ad Playback Ads are targeted to accounts with specific demographics. To test this section and trigger ads more frequently, you can use testMode="audio" argument in the setSource mutation.
2.1 Audio ads cannot be skipped (unless the station is changed)  
2.2 Audio cannot be rewound  
2.3 Track options (thumb, skip) are not available for audio ads  
2.4 Pause/play audio should resume where the ad was paused  
2.5 During ad playback the client displays corresponding artwork, title, and companyName Use the ad metadata to display the image, title, and companyName in the track display. If this is not present, it is up to the client to decide what to display.
2.6 Ad audio plays in it's entirety Make sure the audio plays completely and is not cut off in the beginning or end.
3 Station List  
3.1 If display is limited to < 16 characters per line, long station names marquee when highlighted This item will be required for devices that have a very short station name displays
3.2 Station list is scrollable and loads quickly for large amounts of stations  
3.3 Station list order returned by the api is not changed by the client.  
3.4 Client shows appropriate error when reaching the station limit Handle STATION_LIMIT_REACHED error
3.6 Deleting a station currently playing should halt playback (of the next track) Stations can be deleted using the Pandora web client ( to test this scenario
3.7 Selecting currently playing station does not interrupt play From the station list, if a user selects the station that is playing, the current track should not be interrupted.
3.8 Selecting different station stops currently playing station and plays selected station  
3.11 Station names with accent characters show up correctly (e.g. "Gabriel FauréŽ Radio")  
3.12 User is able to access any radio station in the station list (up to 100 stations total) within 30 seconds. Scrolling should be fast and responsive. Implement list paging if necessary.
3.13 Station list is accurate and refreshed when necessary Station list should be refreshed when new stations are created (playing a station factory from search)
4 Create Station  
4.1 Manual search is implemented.  
4.3 Scrolling through search results, marquee long text if display is limited to < 16 characters per line.  
4.4 Selecting a search result stops an existing station and starts the new station  
4.6 Selecting a search result (for the currently playing station) should show the "now playing" screen and not interrupt play  
4.7 Searching on an empty string should not perform an api call  
4.8 Listed track results show artist name Example: "Very Ape by Nirvana" (<track title=""> by <artist>)</artist>
5 Login/Logout  
5.1 Device signs on using Oauth 2.0 The device should not store a Pandora user login and password.
5.2 User can sign out of device Present the login screen after sign out.
6 Multi-user Support These tests are for devices that support simultaneous logins. Example: presenting a list of several associated Pandora accounts and allowing the user to switch between them. Multi-user support is optional.
6.1 Add/remove accounts perform device association/disassociation Call Oauth 2.0 revoke endpoint. Present login screen after sign out.
6.2 Last account logged in is remembered, automatically logged in on startup.  
6.3 Ability to switch accounts Example: "Switch user" option presents user list. Switching users should not disassociate device from account. Devices should only be diassociated if deleted from the device.
7 Pandora Hosted Account Activation Activation helps streamline the account process for devices with limited text entry capabilities. The user is instructed to visit the activation URL on a PC to create or associate an account.
7.3 Device login from an existing account and shows user's stations  
7.4 Device login from a new account, takes user to the create station screen  
9 Pandora Startup  
9.1 Starts playing last station played Use current playback query to continue playback on login. Handle SOURCE_NOT_SET error.
9.2 Show create station/search screen if no stations exist  
9.3 Application handles not being able to connect to Pandora  
10 User Account States You will need a user account for each Pandora subscription tier to test this section
10.1 Tier 1: user hears tracks and audio ads  
10.2 Tier 2/3: user hears tracks, no audio ads  
10.3 Suspended: user directed to contact support Device should show a message similar to: "Sorry, this account is no longer active. Please contact Pandora listener support at" Client should handle both the cases where suspended user tries to log on and already-logged in user becomes suspended.
11 Api Usage  
11.1 Client should refresh the access token when it becomes invalid  
11.2 Ensure correct encryption and protocol support Bearer tokens are used and client id and secrets are not availabe in binary
11.3 Ensure that audio files are only fetched once The client should only issue one GET request per audio track URL.
11.4 Client does not redundantly or excessively call API methods Only call the API when necessary. Avoid excessive calls.
12 Security  
12.1 Partner credentials/keys are not available to the user For example, searching in the binary should not show easy-to-find keys. Please describe how the security measures you have taken.
12.2 Device diagnostics/logging should not disclose Pandora's API or credentials/keys Please describe how the security measures you have taken.
13 User Interface Design and Performance  
13.1 Pandora icons and logos are displayed legibly with no distortion or discoloration. Pandora logo usage adheres to identity standards.  
13.2 General UI: buttons, text, layout, are consistent and intuitive. Graphics contain no visual defects.  
13.3 All text is free of grammatical and spelling errors. Please review and spellcheck all text
13.4 Special characters and accent characters should show up properly throughout the UI. (e.g. "Gabriel FauréŽ Radio")
13.5 Info and error messages should be displayed completely. Implement text scrolling if necessary.
13.6 Error messages should be specific. Messages should be descriptive and not generic (e.g. "Network error", "Pandora is undergoing system maintenance", "Invalid password")
13.7 Input is responsive. Audio or visual feedback should be presented within 1 second after button press. Long requests should present a "loading" dialog
13.8 "Sign Out" features prompts for confirmation. Prevent users from accidentally signing out
13.9 All text references to "Song" are replaced with "Track" As of May 2011, Pandora hosts non-musical audio tracks, such as comedy. Therefore, it is necessary to refer to songs as "tracks" exclusively in the UI


Product placement Pandora product placement conforms to details agreed upon by partner contract. Examples: - Pandora product visible in a top-level menu structure - Pandora the first music service listed in the menu There may be more requirements or exemptions depending on specific contract (e.g. presence of hardware Pandora/thumbs buttons)
14 System  
14.2 Audio/Video output works as expected Internal speaker and headphone jacks work as expected. Home receiver devices utilize their speaker configurations (subwoofer, 2.1, surround sound). For video devices, available AV outs work as expected, including HDMI, component, etc.
14.3 Device responds well to power-off conditions Login info and app state data (last station played) should not be lost on power off.
14.4 Remote control mappings are correct The remote control should map to relevant controls. The basic set is: pause/play, skip, select, and navigation. Control labels should be consistent on the remote and UI.
14.5 Backgrounding support If device supports backgrounding of the application, audio must continue to play when user navigates away from Pandora and executes other relevant tasks. Pandora session resumes as expected when the user returns to the application.
15 Additional Items This section contains additional items that were found during certification testing. These are required for certification.
15.2 Turning Crossfade feature on the app should not affect audio ads on pandora  
15.3 Create station from Track/Artist doesn't take user to the newly created station (it plays the station but does not redirect)