Swift 3.0播放音乐

写了一个小程序,用swift3.0播放音乐,废话不多说,直接上源码吧

import UIKit
import AVFoundation

class AudioTool: NSObject {
    // MARK:- 音效
    /// 音效文件字典
    static var soundIDs = [String: Any]()
    
    /// 通过不同的音效文件名播放不同的音效
    ///
    /// - Parameter fileName: 音效文件名
    static func playSound(fileName: String) {
        // 1.通过音效文件名为key到字典中获取对应soundID
        var soundID = soundIDs[fileName] as? SystemSoundID ?? 0
        
        // 2.判断soundID是否有值,如果没有值则创建,之后保存到字典中
        if soundID == 0 {
            // 生成soundID
            // 参数1: 音效文件的URL
            // 参数2: 通过参数1生成的soundID
            guard let url = Bundle.main.url(forResource: fileName, withExtension: nil) else { return }
            AudioServicesCreateSystemSoundID(url as CFURL, &soundID)
            
            // 保存到字典中
            soundIDs[fileName] = soundID
        }
        
        // 3.播放音效
        // 播放的时候伴随着手机震动效果
        AudioServicesPlayAlertSound(soundID)
        // 没有震动效果
        //        AudioServicesPlaySystemSound(soundID)
    }
    
    // MARK:- 音乐
    /// 播放器字典
    static var players = [String : Any]()
    /// 播放音乐
    ///
    /// - Parameter file: 音乐文件名
    static func playMusic(filename: String) {
        
        // 1.从字典中通过音乐文件名作为key取出对应的播放器
        var player = players[filename] as? AVAudioPlayer
        
        // 2.判断播放器是否为nil,如果为nil那么,通过音乐文件名创建播放器,保存到字典中
        if player == nil {
            // 1.创建音乐的URL
            guard let url = Bundle.main.url(forResource: filename, withExtension: nil) else { return }
            
            // 2.创建播放器
            do {
                player = try AVAudioPlayer(contentsOf: url)
                
                // 准备播放
                player?.prepareToPlay()
                
                // 将播放器保存到字典中
                players[filename] = player
                
            } catch {
                print(error)
                return
            }
            
        }
        
        // 3.播放音乐
        player?.play()
    }
    
    /// 暂停播放音乐
    ///
    /// - Parameter file: 音乐文件名
    static func pauseMusic(filename: String) {
        // 1.从字典中通过音乐文件名作为key取出对应的播放器
        let player = players[filename] as? AVAudioPlayer
        
        // 2.暂停播放音乐
        player?.pause()
    }
    
    /// 停止播放音乐
    ///
    /// - Parameter file: 音乐文件名
    static func stopMusic(filename: String) {
        
        // 1.从字典中通过音乐文件名作为key取出对应的播放器
        var player = players[filename] as? AVAudioPlayer
        
        // 2.停止播放音乐
        player?.stop()
        player = nil
        
        // 3.从字典中移除
        players.removeValue(forKey: filename)
    }


}

有不懂可以提问哦,也欢迎大牛提升哦

你可能感兴趣的:(Swift 3.0播放音乐)