Soundcloud est une des plus grosses plateformes de musique indépendante, c’est plus de 200 millions d’utilisateurs pour ce réseau sociale basé sur le partage musicale. Certains artistes ne publient leurs musiques que sur cette plateforme. C’est aussi la place pour des novices qui veulent essayer leurs titres et se faire connaitre. Vous pouvez aussi  y retrouver des discours, des podcasts et tout autres types de contenu audio.

Dans cette optique de toujours avoir de la bonne musique, Soundcloud est disponible sur toutes les plateformes (web et mobile) et l’écoute est gratuite. Pour une utilisation encore plus variée de leur service, SoundCloud propose une API ainsi que de nombreux SDK (Javascript, Ruby, Python, PHP, Cocoa et Java). Nous allons voir ensemble comment intégrer SoundCloud dans une application mobile iPhone.

Installation

L’utilisation du SDK étant gratuit, il faut cependant enregistrer votre application sur SoundCloud afin d’obtenir une clé d’utilisation pour votre développement. Vous pouvez la créer en suivant le lien vers vos applications.

Une fois chose faite, créez une application iOS comme vous avez l’habitude via Xcode. La création d’un répertoire Git est conseillé pour l’ajout des différentes dépendances.[

SoundCloud Sample Projet]1

Le SDK SoundCloud a de nombreuses dépendances, celles-ci comprennent la gestion des requêtes à leur service web (API) ainsi que l’interface de connexion pour l’authentification. Pour récupérer l’outil complet, vous pouvez exécuter directement ces commandes en console dans votre projet.

git submodule add git://github.com/soundcloud/CocoaSoundCloudAPI.git
git submodule add git://github.com/nxtbgthng/OAuth2Client.git
git submodule add git://github.com/nxtbgthng/JSONKit.git
git submodule add git://github.com/nxtbgthng/OHAttributedLabel.git
git submodule add git://github.com/soundcloud/CocoaSoundCloudUI.git

Le premier équivaut au SDK, le reste étant les dépendances.

Une fois chose faite, il va falloir importer ces différentes ressources dans votre projet. Répétez l’action pour chaque librairie téléchargée précédemment.

[Soundcloud est une des plus grosses plateformes de musique indépendante, c’est plus de 200 millions d’utilisateurs pour ce réseau sociale basé sur le partage musicale. Certains artistes ne publient leurs musiques que sur cette plateforme. C’est aussi la place pour des novices qui veulent essayer leurs titres et se faire connaitre. Vous pouvez aussi  y retrouver des discours, des podcasts et tout autres types de contenu audio.

Dans cette optique de toujours avoir de la bonne musique, Soundcloud est disponible sur toutes les plateformes (web et mobile) et l’écoute est gratuite. Pour une utilisation encore plus variée de leur service, SoundCloud propose une API ainsi que de nombreux SDK (Javascript, Ruby, Python, PHP, Cocoa et Java). Nous allons voir ensemble comment intégrer SoundCloud dans une application mobile iPhone.

HUGOMORE42

Installation

L’utilisation du SDK étant gratuit, il faut cependant enregistrer votre application sur SoundCloud afin d’obtenir une clé d’utilisation pour votre développement. Vous pouvez la créer en suivant le lien vers vos applications.

Une fois chose faite, créez une application iOS comme vous avez l’habitude via Xcode. La création d’un répertoire Git est conseillé pour l’ajout des différentes dépendances.[

SoundCloud Sample Projet]1

Le SDK SoundCloud a de nombreuses dépendances, celles-ci comprennent la gestion des requêtes à leur service web (API) ainsi que l’interface de connexion pour l’authentification. Pour récupérer l’outil complet, vous pouvez exécuter directement ces commandes en console dans votre projet.

git submodule add git://github.com/soundcloud/CocoaSoundCloudAPI.git
git submodule add git://github.com/nxtbgthng/OAuth2Client.git
git submodule add git://github.com/nxtbgthng/JSONKit.git
git submodule add git://github.com/nxtbgthng/OHAttributedLabel.git
git submodule add git://github.com/soundcloud/CocoaSoundCloudUI.git

Le premier équivaut au SDK, le reste étant les dépendances.

Une fois chose faite, il va falloir importer ces différentes ressources dans votre projet. Répétez l’action pour chaque librairie téléchargée précédemment.

][2] Soundcloud projet

Configuration

Maintenant que nous avons importés nos ressources, nous allons ajouter ces dépendances dans la configuration de notre projet. Pour cela, il faut aller dans l’onglet “Build Phases” de votre target afin d’ajouter les différentes dépendances:

[Soundcloud est une des plus grosses plateformes de musique indépendante, c’est plus de 200 millions d’utilisateurs pour ce réseau sociale basé sur le partage musicale. Certains artistes ne publient leurs musiques que sur cette plateforme. C’est aussi la place pour des novices qui veulent essayer leurs titres et se faire connaitre. Vous pouvez aussi  y retrouver des discours, des podcasts et tout autres types de contenu audio.

Dans cette optique de toujours avoir de la bonne musique, Soundcloud est disponible sur toutes les plateformes (web et mobile) et l’écoute est gratuite. Pour une utilisation encore plus variée de leur service, SoundCloud propose une API ainsi que de nombreux SDK (Javascript, Ruby, Python, PHP, Cocoa et Java). Nous allons voir ensemble comment intégrer SoundCloud dans une application mobile iPhone.

HUGOMORE42

Installation

L’utilisation du SDK étant gratuit, il faut cependant enregistrer votre application sur SoundCloud afin d’obtenir une clé d’utilisation pour votre développement. Vous pouvez la créer en suivant le lien vers vos applications.

Une fois chose faite, créez une application iOS comme vous avez l’habitude via Xcode. La création d’un répertoire Git est conseillé pour l’ajout des différentes dépendances.[

SoundCloud Sample Projet]1

Le SDK SoundCloud a de nombreuses dépendances, celles-ci comprennent la gestion des requêtes à leur service web (API) ainsi que l’interface de connexion pour l’authentification. Pour récupérer l’outil complet, vous pouvez exécuter directement ces commandes en console dans votre projet.

git submodule add git://github.com/soundcloud/CocoaSoundCloudAPI.git
git submodule add git://github.com/nxtbgthng/OAuth2Client.git
git submodule add git://github.com/nxtbgthng/JSONKit.git
git submodule add git://github.com/nxtbgthng/OHAttributedLabel.git
git submodule add git://github.com/soundcloud/CocoaSoundCloudUI.git

Le premier équivaut au SDK, le reste étant les dépendances.

Une fois chose faite, il va falloir importer ces différentes ressources dans votre projet. Répétez l’action pour chaque librairie téléchargée précédemment.

[Soundcloud est une des plus grosses plateformes de musique indépendante, c’est plus de 200 millions d’utilisateurs pour ce réseau sociale basé sur le partage musicale. Certains artistes ne publient leurs musiques que sur cette plateforme. C’est aussi la place pour des novices qui veulent essayer leurs titres et se faire connaitre. Vous pouvez aussi  y retrouver des discours, des podcasts et tout autres types de contenu audio.

Dans cette optique de toujours avoir de la bonne musique, Soundcloud est disponible sur toutes les plateformes (web et mobile) et l’écoute est gratuite. Pour une utilisation encore plus variée de leur service, SoundCloud propose une API ainsi que de nombreux SDK (Javascript, Ruby, Python, PHP, Cocoa et Java). Nous allons voir ensemble comment intégrer SoundCloud dans une application mobile iPhone.

HUGOMORE42

Installation

L’utilisation du SDK étant gratuit, il faut cependant enregistrer votre application sur SoundCloud afin d’obtenir une clé d’utilisation pour votre développement. Vous pouvez la créer en suivant le lien vers vos applications.

Une fois chose faite, créez une application iOS comme vous avez l’habitude via Xcode. La création d’un répertoire Git est conseillé pour l’ajout des différentes dépendances.[

SoundCloud Sample Projet]1

Le SDK SoundCloud a de nombreuses dépendances, celles-ci comprennent la gestion des requêtes à leur service web (API) ainsi que l’interface de connexion pour l’authentification. Pour récupérer l’outil complet, vous pouvez exécuter directement ces commandes en console dans votre projet.

git submodule add git://github.com/soundcloud/CocoaSoundCloudAPI.git
git submodule add git://github.com/nxtbgthng/OAuth2Client.git
git submodule add git://github.com/nxtbgthng/JSONKit.git
git submodule add git://github.com/nxtbgthng/OHAttributedLabel.git
git submodule add git://github.com/soundcloud/CocoaSoundCloudUI.git

Le premier équivaut au SDK, le reste étant les dépendances.

Une fois chose faite, il va falloir importer ces différentes ressources dans votre projet. Répétez l’action pour chaque librairie téléchargée précédemment.

][2] Soundcloud projet

Configuration

Maintenant que nous avons importés nos ressources, nous allons ajouter ces dépendances dans la configuration de notre projet. Pour cela, il faut aller dans l’onglet “Build Phases” de votre target afin d’ajouter les différentes dépendances:

]4 Vous devez vous retrouver avec la liste suivanteListe target dependances Soundcloud

Continuons avec les liens vers les librairies, elles sont nombreuses, donc attention à ne pas en oublier:

  • libJSONKit.a
  • libOAuth2Client.a
  • libOHAttributedLabel.a
  • libSoundCloudAPI.a
  • libSoundCloudUI.a
  • AddressBook.framework
  • AddressBookUI.framework
  • CoreGraphics.framework
  • CoreLocation.framework
  • CoreText.framework
  • QuartzCore.framework
  • Security.framework

Link binary Soundcloud

Voici votre liste de librairies finale Liste Link Binary SoundCloud

On va indiquer à notre projet de charger toutes les dépendances à la compilation avec les flags suivant ‘-all_load -ObjC’

Flag Soundcloud

On continue en indiquant à notre projet où rechercher les fichiers headers de nos dépendances. Pour ça, ajoutez la ligne “$PROJECT_DIR” dans “Header Search Paths” dans l’onglet ‘Build Settings’.

Enfin, il ne manque que les ressources images à ajouter. Dans votre dossier SoundCloudUI, faite un “drag & drop” du fichier “SoundCloud.bundle” en indiquant bien une copie dans votre projet.

Finissez par compiler votre projet pour vérifier que tout est bien intégré. On va pouvoir passer au code.

Utilisation

Après tout ce qu’on a fait pour l’installation, le code va vraiment vous sembler facile. Il va falloir définir votre session d’utilisation avec les informations de SoundCloud, nous allons utiliser les clés générées sur le portail de développement.

[SCSoundCloud setClientID:@"YOUR_CLIENT_ID" secret:@"YOUR_CLIENT_SECRET" redirectURL:[NSURL URLWithString:@"sampleproject://oauth"]];

Soyez sure de faire les bons imports des différents “headers” de vos librairies. C’est ce même code que vous pouvez utiliser pour reconnecter votre utilisateur au prochain lancement de l’application: la gestion des “credentials” est déjà implémentée.

Pour faire une demande de connexion, je vous propose le code suivant:

SCAccount *account = [SCSoundCloud account]; // on regarde si une session est ouverte
if (account == nil) {
        SCLoginViewControllerCompletionHandler handler = ^(NSError *error) { // on definie le traitement apres requete
            if (SC_CANCELED(error)) {
                NSLog(@"Canceled!");
            } else if (error) {
                NSLog(@"Error: %@", [error localizedDescription]);
            } else {

                NSLog(@"Done!");
                /* Votre code de recuperation de donnees ici */
            }
        };

        [SCSoundCloud requestAccessWithPreparedAuthorizationURLHandler:^(NSURL *preparedURL) {
            // on prepare notre controleur et sa requete
            SCLoginViewController *loginViewController = [SCLoginViewController
                                   loginViewControllerWithPreparedURL:preparedURL
                                   completionHandler:handler];
            // On presente le controleur pour la connexion
            [self presentViewController:loginViewController animated:YES completion:nil];

        }];
    }

Une fois que votre utilisateur est connecté, voici un code simple pour récupérer les dernières chansons mise en ligne pour un artiste donnée, pour moi ce sera Mac Miller:

SCAccount *account = [SCSoundCloud account]; // on recupere notre session utilisateur
SCRequestResponseHandler handler;
handler = ^(NSURLResponse *response, NSData *data, NSError *error) { // on definie le traitement a faire e
        NSError *jsonError = nil;
        NSJSONSerialization *jsonResponse = [NSJSONSerialization
                                             JSONObjectWithData:data
                                             options:0
                                             error:&jsonError];
        if (!jsonError && [jsonResponse isKindOfClass:[NSArray class]]) { // je traite mon tableau json recu en resultat

            _data = [NSMutableArray arrayWithArray:(NSArray*)jsonResponse];
            [_tableView reloadData];
        }
    };
    // je definie l'URL sur laquelle faire la requete -- A voir dans l'API suivant ce que vous voulez faire
    NSString *resourceURL = @"https://api.soundcloud.com/users/23226090/tracks.json";

    // on definie notre requete en passant nos differents arguments (type de requete, url, compte & handler)
    [SCRequest performMethod:SCRequestMethodGET
                  onResource:[NSURL URLWithString:resourceURL]
             usingParameters:nil
                 withAccount:account
      sendingProgressHandler:nil
             responseHandler:handler];

Enfin, pour lire une musique, il faut récupérer le lien dans la partie du JSON retourné:

// on recupere la session de l'utilisateur
SCAccount *account = [SCSoundCloud account];
// on prepare la requete avec le type, l'url, le compte et un handler en bloc.
[SCRequest performMethod:SCRequestMethodGET
                      onResource:[NSURL URLWithString:streamURL]
                 usingParameters:nil
                     withAccount:account
          sendingProgressHandler:nil
                 responseHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                     NSError *playerError;
                     // on declare notre player qui va lire nos donnees recuperees
                     AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:data error:&playerError];
                     [player prepareToPlay];
                     [player play];
}];

Conclusion

Le SDK iOS de SoundCloud peut sembler laborieux à mettre en place mais une fois installé, son utilisation est facile et son code est simple à maintenir.

Cette ouverture pour les développeurs sur cette plateforme de musique indépendante permet d’imaginer toujours plus de façon de découvrir de la musique ainsi que de le partager. Il existe encore bon nombre d’utilisations, facilitant l’upload de musique sur SoundCloud ou de permettre une écoute hors ligne, ou encore de mixer des musiques en fonction de style musicale écouté et d’artistes suivis.

Il vous reste toujours plus de possibilités de développer l’application de demain.