2017-02-03 7 views
0

Jusqu'ici, j'ai beaucoup de réponses contradictoires à ce sujet.iOS: est-il vraiment impossible d'obtenir des informations sur la piste en cours de lecture dans des applications tierces (comme Spotify)?

En this SO thread, il est dit à utiliser:

let player = MPMusicPlayerController.systemMusicPlayer() 
if let mediaItem = player.nowPlayingItem { 
    // ... 
} 

Cependant, cela ne fonctionne qu'avec le lecteur iOS. Si la chanson en cours est jouée par Spotify par exemple, mediaItem sera nil. Je comprends que la politique d'Apple ne permet pas d'accéder aux données d'autres applications. La seule chose que je suis capable de faire maintenant est de savoir si une chanson joue à partir d'un autre joueur avec l'aide de AVAudioPlayersecondaryAudioShouldBeSilencedHint et isOtherAudioPlaying.

Je veux savoir, cependant, s'il y a un autre moyen d'y accéder, comme l'utilisation du framework Spotify? (Je ne suis absolument pas familier avec ça, c'est juste faire des suppositions).

Merci pour votre aide.

Répondre

0

Je ne suis pas sûr d'iOS mais la piste actuelle peut être lue depuis Spotify sur un Mac via AppleScript. J'utilise cette technique de l'objectif C. Si vous êtes intéressé, je peux poster le code.

Spotify publier leur API pour AppleScript ici https://developer.spotify.com/applescript-api/

Si vous êtes à la recherche d'un moyen générique de déterminer ce qui joue alors je pense que vous serez déçu. Chaque application aura une manière différente de récupérer cette information.

0

Alors oui et non. Si vous voulez spécifiquement vérifier seulement si Spotify est en train de jouer, alors peut-être que le Spotify iOS SDK fournit des fonctionnalités pour une telle chose. Je ne sais vraiment pas sur la fonctionnalité de ce SDK.

Je m'aventurerais à deviner que votre objectif réel est de voir si un framework tiers joue; Pandora, Tidal, Apple Music, Amazon Prime Music, etc. Dans ce cas, vous auriez besoin d'un cadre pour chacun qui a fourni une telle fonctionnalité. Les applications sont sandboxées les unes des autres pour la sécurité, donc oui, il n'y a aucun moyen de dire les informations de piste actuelles autrement que si vous avez le cadre en place et qu'il offre cette fonctionnalité.