Détection des dossiers de playlist iTunes sur un périphérique

Grâce à iTunes, vous pouvez créer des dossiers de playlist nesteds de façon arbitraire. Lorsque vous copyz ces dossiers de list de lecture sur votre appareil iOS, iTunes est en mesure de détecter qu'ils sont des dossiers et vous permet d'effectuer des searchs jusqu'au point où vous obtenez des chansons. Une idée de comment ils font ça ?? J'ai essayé de comprendre cela pendant des jours.

Lorsque je request un ID persistID spécifique d'un dossier connu, les seules choses que je peux voir à ce sujet qui sont différentes d'une playlist qui contient des chansons sont:

  • playlist.mediaTypes = 4359 (c'est Musique | Podcast | Audiobook | Film | VideoiTunes) alors qu'une playlist normale ne mélange pas les types audio et les types de video
  • valeur pour la propriété MPMediaPlaylistPropertyPlaylistAtsortingbutes contient 2 (MPMediaPlaylistAtsortingbuteSmart), alors qu'une playlist normale contient 0
  • le nombre d'éléments sera égal au nombre total d'éléments sur l'appareil

Mais c'est tout! Je ne vois aucun moyen d'accéder aux sous-dossiers. Ou, lors de l'interrogation d'une list de lecture ou d'un sous-dossier contenu dans un dossier, je ne vois aucun moyen de l'attacher au parent.

Apple le fait dans iTunes, donc il doit y avoir un moyen. Utilisent-ils une API privée?

Les propriétés non documentées suivantes peuvent vous permettre d'get ce que vous searchz en utilisant la méthode valueForProperty : @"isFolder" et @"parentPersistentID" .

Notez que ceux-ci ne sont pas documentés et n'apparaissent dans aucun file d'en-tête, leur utilisation peut donc être considérée comme l'utilisation d'une 'API privée' selon les règles de soumission d'applications d'Apple.

J'ai ouvert un rapport de bogue à Apple demandant que ceux-ci soient disponibles dans des files d'en-tête, et demandant également de clarifier s'ils sont considérés comme faisant partie d'une API privée.