Coder Social home page Coder Social logo

mathiaskjeldsen / cordova-spotify-ios Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 107 KB

Cordova integration with the Spotify iOS SDK

License: MIT License

Objective-C 76.53% JavaScript 23.47%
cordova spotify objective-c cordova-spotify-ios spotify-sdk cordova-ios-plugin

cordova-spotify-ios's Introduction

cordova-spotify-ios

Cordova integration with the Spotify iOS SDK

https://github.com/spotify/ios-sdk

Install

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

Spotify App Redirect

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];
}

Access through window

private spotifyiOS = window.cordova.plugins.spotifyCall

Initialization and authorization

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.

Check if Spotify is installed

this.spotifyiOS.isSpotifyAppInstalled(onSuccess); // true or false

Config

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",
},

Initialize a session with the Spotify App

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);

App Remote

Check if App Remote is connected

this.spotifyiOS.isAppRemoteConnected(onSuccess); // true or false

Play

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

Play playlist

Requirements

  • PlaylistURI: spotify:playlist:playlistid
  • Index: Start index
this.spotifyiOS.playPlaylistByUriAndIndex(onSucess, onError, playuri, index);

Control

this.spotifyiOS.resume(onSuccess, onError);
this.spotifyiOS.pause(onSuccess, onError);
this.spotifyiOS.seek(onSuccess, onError, position); // target position in milliseconds

Events

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    
}

cordova-spotify-ios's People

Contributors

mathiaskjeldsen avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.