Cordova integration with the Spotify iOS SDK
https://github.com/spotify/ios-sdk
cordova plugin add cordova-spotify-ios
Download the latest version of the Spotify iOS SDK and import it into Xcode
https://github.com/spotify/ios-sdk/releases
For the Spotify App to be able to redirect back to your application, with a session, you need to add the following code to your AppDelegate in Xcode.
#import "SpotifyiOSHeaders.h"
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)URL options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
{
if([[SpotifyRemote sharedInstance]eventCallbackId] != nil) {
[[SpotifyRemote sharedInstance] emit:@"CONNECT" withError:nil];
[[SpotifyRemote sharedInstance] authParamsFromURL:URL];
}
return [[SpotifyiOS sharedInstance] application:application openURL:URL options:options];
}
private spotifyiOS = window.cordova.plugins.spotifyCall
A Spotify developer application has to be registered in the Spotify developer dashboard https://developer.spotify.com/dashboard/applications
The Spotify App must be installed on the device for the plugin to work.
this.spotifyiOS.isSpotifyAppInstalled(onSuccess); // true or false
A JSON object config needs to be assembled to initialize with the Spotify App
config: {
clientID: "############################",
redirectURL: "url-scheme://callback",
tokenRefreshURL: "your-server/refresh",
tokenSwapURL: "your-server/exchange",
},
this.spotifyiOS.initialize(onSuccess, onError, config);
Example
this.spotifyiOS.initialize(({accessToken, refreshToken}) => {
let date = new Date();
const expirationDate = date.setHours(date.getHours() + 1).toString();
window.localStorage.setItem('accessToken', accessToken);
window.localStorage.setItem('refreshToken', refreshToken);
window.localStorage.setItem('expirationDate', expirationDate);
}, this.handleError, this.config);
this.spotifyiOS.isAppRemoteConnected(onSuccess); // true or false
If App Remote is not connected
this.spotifyiOS.authAndPlay(onSuccess, onError, config);
If App remote is connected
this.spotifyiOS.queueURI(onSuccess, onError, playuri); // URI of the requested track
this.spotifyiOS.playURI(onSuccess, onError, playuri); // URI of the requested track
Requirements
- PlaylistURI: spotify:playlist:playlistid
- Index: Start index
this.spotifyiOS.playPlaylistByUriAndIndex(onSucess, onError, playuri, index);
this.spotifyiOS.resume(onSuccess, onError);
this.spotifyiOS.pause(onSuccess, onError);
this.spotifyiOS.seek(onSuccess, onError, position); // target position in milliseconds
this.spotifyiOS.events.onPause = () => {}
this.spotifyiOS.events.onResume = () => {}
this.spotifyiOS.events.onTrackEnded = (trackURI: string) => {}
this.spotifyiOS.events.appRemoteStateChange = (state: number) => {
0 = didFailConnectionAttemptWithError
1 = didDisconnectWithError
2 = appRemoteDidEstablishConnection
}