2016-11-06 2 views
1

Mon application rencontre des problèmes pour localiser les fichiers figurant dans le dossier de musique de mon appareil iOS.Comment accéder aux fichiers musicaux stockés sur le périphérique iOS?

Si les fichiers sont conservés ci-dessous en tant que données d'application (dans mon parc), aucun problème. Mais quand je vais chercher le dossier « Music », en utilisant les lignes suivantes:

dest_dir = try! FileManager.default.url(for: .musicDirectory, in: .allDomainsMask, appropriateFor: nil, create: false) 

musicDir = dest_dir 

if UIApplication.shared.canOpenURL(musicDir) { 
    print("found music directory") 
}else { 
    print("did not find music directory") 
} 

Lorsque le code exécute le canOpenURL, je reçois une plainte d'autorisations.

J'ai également essayé d'accéder au répertoire de l'utilisateur (en pensant que je pouvais alors naviguer dans Music).

Des indices sur la manière dont une application peut accéder aux fichiers et listes de lecture contenus dans le dossier du système de musique sur l'appareil iOS?

+0

Quand j'exécuter votre code dans mon simulateur il enregistre « trouvé de musique » très bien. – Aaron

+0

@Aaron: c'est parce que le simulateur n'impose pas de sandboxing, ce qui est le cas de J. R.. –

+0

Je suppose que je devrais lire attentivement la question avant de commenter. "parc" m'a jeté. – Aaron

Répondre

0

iOS ne vous donne pas un accès direct au dossier Musique, pour des raisons de sécurité et de confidentialité; vous devez utiliser les API dans le MediaPlayer framework. En supposant que vous essayez de lire le contenu de la bibliothèque de l'utilisateur, jetez un oeil à MPMusicPlayerController; vous devrez lui fournir quelques instances MPMediaItem récupérées avec un MPMediaQuery, puis appeler les méthodes du MPMediaPlayback protocol sur le contrôleur pour lui faire lire le contenu.

+0

Appréciez l'indice. Merci –

4

Il n'existe pas de "dossier Musique" dans iOS. Pour accéder à la bibliothèque musicale de l'utilisateur, utilisez le framework Media Player.

Exemple (en supposant que vous avez obtenu l'autorisation nécessaire de l'utilisateur):

let query = MPMediaQuery() 
let result = query.items 
+1

Beaucoup plus d'exemple de code ici: https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch16p678mediaQuery/ch29p946mediaQuery/ViewController.swift – matt

+0

Appréciez l'indice. Merci –

+1

Info.plist de l'application doit contenir une clé NSAppleMusicUsageDescription avec une valeur de chaîne expliquant à l'utilisateur comment l'application utilise ces données. – Martian2049