Swift -- Chirp第三方播放本地音频文件


//在项目中避免不了要在恰当的位置适时的播放一小段段或者极其简短的声音,比如点击按钮时的卡卡声,error出现弹出view时的警告声,点击拍照的咔嚓声,电量不足的噔噔声,QQ来信时的滴滴声,等等,不胜枚举,用法列举如下:

1.github上面搜索Swift对应的Chirp,然后进行pod操作,或者直接把源文件拖到工程中也行,很小的一个第三方

2.创建一个Sound类,代码如下:

import UIKit
enum SoundType: String {
    
    
    case click = "click"
    case void = "void"
    case dropDown = "dropDownList"
    case showBanner = "bannerFloatingIcons.mp3"
    case swipe = "swipe"
    case wiggle = "wiggle.mp3"
    case changeDeviceDirection = "portraitLandscapeModes.mp3"
    case recapShrink = "orderInfoRecapShrink.mp3"
    case popup = "popup"
    case error = "error.mp3"
    case settled = "paymentSettled.mp3"
    case pay = "IntegratedPayment_samsung_sms.mp3"
    case webOrderSound = "new_web_order_arrival.mp3"
    case webOrderVoice = "A-New-Third-Party-Online-Order-Was-Received.mp3"
    case kioskOrderVoice = "A-New-Kiosk-Order-Was-Received.mp3"
    case masaOnlineOrderVoice = "A-New-Masa-Online-Order-Was-Received.mp3"
    case waitCallStaffSound = "NewInvite.mp3"
    case waitCallStaffVoice = "Table-Service-Is-Requested.mp3"
    case scanCorrectQRVoice = "Please-Scan-The-Correct-Order-QR.mp3"
    
}

class Sound {
    
    
    static func preparedAllSounds() {
    
    
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.click.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.void.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.dropDown.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.showBanner.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.swipe.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.wiggle.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.changeDeviceDirection.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.recapShrink.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.popup.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.error.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.settled.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.pay.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.webOrderSound.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.webOrderVoice.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.kioskOrderVoice.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.masaOnlineOrderVoice.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.waitCallStaffSound.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.waitCallStaffVoice.rawValue)
        _ = Chirp.sharedManager.prepareSound(fileName: SoundType.scanCorrectQRVoice.rawValue)
    }
    
    static func removeAllSounds() {
    
    
        Chirp.sharedManager.removeSound(fileName: SoundType.click.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.void.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.dropDown.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.showBanner.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.swipe.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.wiggle.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.changeDeviceDirection.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.recapShrink.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.popup.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.error.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.settled.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.pay.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.webOrderSound.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.webOrderVoice.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.kioskOrderVoice.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.masaOnlineOrderVoice.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.waitCallStaffVoice.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.scanCorrectQRVoice.rawValue)
        Chirp.sharedManager.removeSound(fileName: SoundType.waitCallStaffSound.rawValue)
        
    }
    
    static func play(type: SoundType) {
    
    
        var disableSound = false
        let dSound = UserDefaults.standard.object(forKey: "enabled_preference_sound") as? Bool
        if let dSound = dSound {
    
    
            disableSound = dSound
        }

        if disableSound == false {
    
    
            Chirp.sharedManager.playSound(fileName: type.rawValue)
        }
    }
}


3.调用,比如在viewController中:
    override func viewDidLoad() {
    
    
        super.viewDidLoad()
        Sound.preparedAllSounds() //这一步是必须的,而且不用在用到播放对应的VC中都写一次,在mainVC中写一次即可
    }

    @IBAction func SoundAction(_ sender: Any) {
    
        
        Sound.play(type: .click)
    }

so,就这样,非常好用,非常实用,朴实无华,功能满满,不需要讲什么大牛做什么厉害的东西,自己查找资料解决了问题,你就是大牛。




猜你喜欢

转载自blog.csdn.net/SoftwareDoger/article/details/106668502