Вы можете объявить своего игрока таким:
import UIKit
import AVFoundation
import MediaToolbox
import MediaPlayer
class MusicPlayer: NSObject {
static let player = MusicPlayer()
//this is global variable
var player : AVPlayer?
var playerItem:AVPlayerItem?
func initPlayer(){
do {
UIApplication.shared.beginReceivingRemoteControlEvents()
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
print("AVAudioSession Category Playback OK")
do {
try AVAudioSession.sharedInstance().setActive(true)
print("AVAudioSession is Active")
} catch let error as NSError {
print(error.localizedDescription)
}
} catch let error as NSError {
print(error.localizedDescription)
}
}
func playMusic(_ musicUrl: String?) {
if let mm = musicUrl {
var url: URL!
url = URL(string: mm)
playerItem = AVPlayerItem(url: url)
player = AVPlayer(playerItem: playerItem)
player?.volume = 1.0
player?.rate = 1.0
player?.play()
}
}
}
После того, как вы можете инициализировать это в вашем AppDelegate, как это
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
MusicPlayer.player.initPlayer()
return true
}
После этого игрок использует вот так
MusicPlayer.player.playMusic(YourFile)