2017-01-18 1 views
0

私のプロジェクトにアップルの音楽で利用できるすべてのプレイリストを取得する方法。私はすべてのリンゴの音楽プレイリストにアクセスしたい、現在私はMPMediaLibraryをプレイリストメソッドを使用していますが、データやエラーを取得していないのですか?私のプロジェクトにアップルの音楽で利用可能なすべてのプレイリストを取得する方法

`func getUserPlaylist() 
    { 
MPMediaLibrary.requestAuthorization { (status) in 
print(status) 
     } 
     let lib = MPMediaLibrary() 
     // let name = "playlist name" 
     // let id:NSUUID = NSUUID() 
     // let metadata = MPMediaPlaylistCreationMetadata.init(name: name) 
     // metadata.authorDisplayName = "author" 
     // metadata.descriptionText = "description" 
     lib.getPlaylist(with:id as UUID, creationMetadata: nil) { (playlist, error) in 
      guard error == nil 
       else 
      { 
       print(error.debugDescription) 
       return 
      } 
      if let currentPlaylist = playlist 
      { 
       print(currentPlaylist.name) 
      } 
     } 
    } ` 

答えて

1

アップルの音楽ライブラリにアクセスするには、info.plistに「プライバシー - メディアライブラリ使用の説明」を追加する必要があります。次に、クラスをMPMediaPickerControllerDelegateに準拠させる必要があります。 Apple Musicライブラリを表示するには、MPMediaPickerControllerを表示します。ソングを配列に追加するには、MPMediaPickerControllerDelegateのdidPickMediaItemsメソッドを実装します。

class MusicPicker:UIViewController, MPMediaPickerControllerDelegate { 
//the songs the user will select 
var selectedSongs: [URL]! 

//this method is to display the music library. You might call it when a user taps a button to add songs to their playlist 
func getSongs() { 

var mediaPicker: MPMediaPickerController? 

mediaPicker = MPMediaPickerController(mediaTypes: .music) 

mediaPicker?.delegate = self 

mediaPicker?.allowsPickingMultipleItems = true 

mediaPicker?.showsCloudItems = false 
//present the music library 
present(mediaPicker!, animated: true, completion: nil) 

    } 

    //this is called when the user selects songs from the library 
    func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) { 
     //these are the songs that were selected. We are looping over the choices 
     for mpMediaItem in mediaItemCollection.items { 
//the song url, add it to an array 
let songUrl = mpMediaItem.assetURL 
selectedSongs.append(songURL) 
     } 
     //dismiss the Apple Music Library after the user has selected their songs 
     dismiss(animated: true, completion: nil) 

     } 
     //if the user clicks done or cancel, dismiss the Apple Music library 
     func mediaPickerDidCancel(mediaPicker: MPMediaPickerController) { 

     dismiss(animated: true, completion: nil) 
    } 
     } 
+0

私は自分のやり方ではできませんか?たとえば、すべてのプレイリストをMPPlaylistオブジェクトとしてフェッチし、これらをすべて配列に格納したいとします。 –

+0

可能かどうかわかりません。このページによると、https://developer.apple.com/reference/mediaplayer/mpmediaplaylist Appleによると、MPMediaPlaylistsはiOSデバイスに対して読み取り専用です。このコードを使用してプレイリストを照会することはできますが、プレイリストを保存する方法はわかりません。 let myList = MPMediaQuery.playlists() let allPlaylists = myQuery.collections allPlaylistsのthisPlaylistにしましょう! { print(thisPlaylist.value(forKey:MPMediaPlaylistPropertyName)) } – gwinyai

0

以下のコードを使用してすべてのプレイリストを取得しました。私はMPMediaQueryクラスを使用しました。

let query: MPMediaQuery = MPMediaQuery.playlists() 
     let playlists = query.collections 
     guard playlists != nil else { 
      return 
     } 
     for collection in playlists! 
     { 
      print(playlists?.description) 
     } 
関連する問題