SWIFT-鎖屏播放

前言

我們在寫APP中經(jīng)常會遇到需要鎖屏播放的這種情況,在這里,樓主就簡單的說說鎖屏播放是怎么實現(xiàn)的。

此篇文章為Swift版本,OC版本請移步這里:OC版本

如何實現(xiàn)

打開后臺模式

在設(shè)置的Capabilities中選擇后臺模式的第一項,如下圖所示:


g

導入相應(yīng)的頭文件

import AVFoundation
import MediaPlayer

播放音樂并設(shè)置相關(guān)信息

播放音樂并設(shè)置鎖屏需要顯示的相關(guān)信息

//    MARK: 播放音樂
func playMusic() {
    audioPlayer = try? AVAudioPlayer(contentsOf: Bundle.main.url(forResource: model.filename, withExtension: nil)!)
    audioPlayer.delegate = self
    audioPlayer.prepareToPlay()
    if !audioPlayer.isPlaying {
        audioPlayer.play()
    }
}

//    MARK: 設(shè)置鎖屏信息顯示
func setLockScreenDisplay() {
    var info = Dictionary<String, Any>()
    info[MPMediaItemPropertyTitle] = model.name//歌名
    info[MPMediaItemPropertyArtist] = model.singer//作者
   //        [info setObject:self.model.filename forKey:MPMediaItemPropertyAlbumTitle];//專輯名
    info[MPMediaItemPropertyAlbumArtist] = model.singer//專輯作者
    info[MPMediaItemPropertyArtwork] = MPMediaItemArtwork(image: UIImage.init(named: model.icon)!)//顯示的圖片
    info[MPMediaItemPropertyPlaybackDuration] = audioPlayer.duration//總時長
    info[MPNowPlayingInfoPropertyPlaybackRate] = 1.0//播放速率
    MPNowPlayingInfoCenter.default().nowPlayingInfo = info
}
打開后臺播放
 //    MARK: 后臺播放
func playingBackground() {
    let session = AVAudioSession.sharedInstance()
    try? session.setCategory(AVAudioSessionCategoryPlayback)
    try? session.setActive(true)
}

打開和關(guān)閉遠程控制事件

viewWillAppear中打開接受遠程控制事件,在viewWillDisappear中關(guān)閉遠程控制事件,代碼如下:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    becomeFirstResponder()
    UIApplication.shared.beginReceivingRemoteControlEvents()
}
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    resignFirstResponder()
    UIApplication.shared.endReceivingRemoteControlEvents()
}
設(shè)置鎖屏控制

設(shè)置鎖屏時,鎖屏界面的相關(guān)控制按鈕所應(yīng)該執(zhí)行的方法

//    MARK: 鎖屏控制
override func remoteControlReceived(with event: UIEvent?) {
    let type = event?.subtype
    switch type! {
    case .remoteControlPlay: break
        //播放
    case .remoteControlPause: break
        //暫停
    case .remoteControlStop: break
    //停止
    case .remoteControlTogglePlayPause: break
    //切換播放暫停(耳機線控)
    case .remoteControlNextTrack: break
        //下一首
    case .remoteControlPreviousTrack: break
        //上一首
    case .remoteControlBeginSeekingBackward: break
    //開始快退
    case .remoteControlEndSeekingBackward: break
    //結(jié)束快退
    case .remoteControlBeginSeekingForward: break
    //開始快進
    case .remoteControlEndSeekingForward: break
    //結(jié)束快進
    default:
        break
    }
}

到這里為止,鎖屏播放就完成了,Demo中附有完整的音樂播放器,Demo下載地址:Demo。最后,希望這篇文章對各位看官們有所幫助。對支持小編的看官們表示感謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容