を使用しMPMediaPickerController
て、ユーザーがデバイスの iPod ライブラリから曲を選択できるようにしています。次に、この曲を配列 (この場合は) に配置し、インスタンスをplayerQueue
使用して次から次へと曲を再生します。AVPlayer
- (void)setQueueWithItemCollection:(MPMediaItemCollection *)theCollection {
for (MPMediaItem *theMediaItem in theCollection.items) {
NSURL *mediaURL = [theMediaItem valueForProperty:MPMediaItemPropertyAssetURL];
AVPlayerItem *thePlayerItem = [AVPlayerItem playerItemWithURL:mediaURL];
// Don't add protected tracks to queue as they cannot be played
if (!thePlayerItem.asset.hasProtectedContent && thePlayerItem.asset.isPlayable) [self.playerQueue addObject:thePlayerItem];
// Further implementation
}
}
次に、このコード スニペットを使用して曲のタイトルを取得します ( を使用AVPlayer *musicPlayer
):
AVPlayerItem *currentItem = self.musicPlayer.currentItem;
AVAsset *asset = currentItem.asset;
// Further implementation
NSLog(@"DEBUG: Meta data: %@", asset.commonMetadata);
NSArray *titles = [AVMetadataItem metadataItemsFromArray:asset.commonMetadata withKey:AVMetadataCommonKeyTitle keySpace:AVMetadataKeySpaceCommon];
ほとんどの場合、これは問題なく機能します。asset.commonMetadata
ただし、空の配列を返す曲もあります。ただし、iPhone のミュージック アプリは、iTunes (Mac の場合) と同じように、曲のタイトル (およびアルバムのアートワークなど) を表示できます。
曲ファイルはApple MPEG 4 Audio
、iTunes Store から購入したファイルです。
asset.commonMetadata
利用可能なメタデータがあるのに空の配列を返すのはなぜですか?