43891


現在、music playerの開発に取り組んでいるのですが  
スワイプすると現在再生している曲が入っているアルバムの次の曲を再生するような仕組みを  
実装しようとしています。

mediapicker(_ didPickMediaItems) で曲を選択し、再生するようにしているのですが  
引数のmediaItemCollectionには選択した一曲だけの情報しか入っていないためか  
skipToNextItem()を使っても上手く動きません。

mediapicker(_,didPickMediaItems)で曲を選択した後に  
その曲のアルバム情報を取得し、その次の曲にスキップするにはどのような方法があるでしょうか。


CC BY-SA 4.0
2018-05-09T08:50:33.057
43888
2018-05-14T04:31:58.237
27271
question
swift ios xcode swift4
iOS開発 のmediapicker(_ didPickMediaItems) を使用してアルバム情報を取得する方法


[MPMediaPickerController](https://developer.apple.com/documentation/mediaplayer/MPMediaPickerController)はあくまで
**曲** を選ぶためのUIとなっています。  
`allowsPickingMultipleItems` が `false` の場合、 `didPickMediaItems` で渡される
MPMediaItemCollection の中身は **1曲のみ** となります。  
その mediaItemCollection を再生しても当然、その1曲のみが再生され、次の曲がないのでスキップすることはできません。

曲ではなく、アルバムを再生したいのならば、選択された
[MPMediaItem](https://developer.apple.com/documentation/mediaplayer/mpmediaitem)
の `albumPersistentID` を条件に、
[MPMediaQuery](https://developer.apple.com/documentation/mediaplayer/mpmediaquery)
を使って **アルバムに含まれるすべての曲** を選択して再生すればよいでしょう。そうすれば（次の曲があれば）スキップもできるはずです。

**追記**

[MPMediaQuery.albums()](https://developer.apple.com/documentation/mediaplayer/mpmediaquery/1621780-albums)
に
[MPMediaItemPropertyAlbumPersistentID](https://developer.apple.com/documentation/mediaplayer/mpmediaitempropertyalbumpersistentid)
をキーに指定した
[MPMediaPropertyPredicate](https://developer.apple.com/documentation/mediaplayer/mpmediaitempropertyalbumpersistentid)
を[条件に追加](https://developer.apple.com/documentation/mediaplayer/mpmediaquery/1621773-addfilterpredicate)して検索してみてください。

参考) [Using Filters to Create Specialized
Queries](https://developer.apple.com/documentation/mediaplayer/using_filters_to_create_specialized_queries)


CC BY-SA 4.0
2018-05-09T09:46:32.400
43891
2018-05-14T04:31:58.237
2018-05-14T04:31:58.237
23829
23829
43888
answer