Using AVPlayer, you could observe AVPlayerItemDidPlayToEndTimeNotification to handle when each song finishes playing, then instantiate a new AVPlayer for the next song URL. The accepted answer on this stackoverflow post describes that approach: http://stackoverflow.com/questions/8102201/how-to-play-multiple-audio-files-in-a-row-with-avaudioplayer
However, a better solution might be to use AVQueuePlayer, which is a subclass of AVPlayer that plays a number of items in sequence:
https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVQueuePlayer_Class/index.html#//apple_ref/swift/cl/AVQueuePlayer
First, create AVPlayerItem objects for each of your song URLs:
AVPlayerItem *aSong = [[AVPlayerItem alloc] initWithURL:aUrl];
Add those AVPlayerItem objects to an array (I’m assuming an array called “items” here). Then a new AVQueuePlayer can be initialized with the array of AVPlayerItem objects:
AVQueuePlayer *queuePlayer = [[AVQueuePlayer alloc] initWithItems:items];
Then to play the song in sequence, just call play in AVQueuePlayer:
[queuePlayer play];
Hope that helps!
]]>