日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS音乐播放器的后台播放和远程控制

發布時間:2023/12/29 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS音乐播放器的后台播放和远程控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

iOS的后臺任務一直有很嚴格的限制,一般情況下只有幾類情況能使用后臺任務,下面介紹其中的一種 音樂的后臺播放。

1.要支持后臺任務,首先你得告訴系統你需要后臺任務,所以你首先在Info.plist文件中添加如下:



在Required background modes中添加 App plays audio or streams/video using AirPlay,如果你的app需要后臺從網絡加載數據,把第二項也添上。



2.接下來在代碼中添加音樂后臺播放,在播放音樂之前設置AVAudioSession,一般情況設置為AVAudioSessionCategoryPlayback

//設置音頻后臺播放let session = AVAudioSession.sharedInstance()session.setActive(true, error: nil)session.setCategory(AVAudioSessionCategoryPlayback , error: nil)



3.如果想在控制中心(屏幕上拉)中設置音樂控制,如上一曲,下一曲,暫停,顯示播放時間,那么就要用到遠程控制事件(RemoteControlEvents)。



? 首先在viewDidLoad()等初始化的地方聲明接收RemoteControlEvents,并且在相應地方結束聲明

override func viewWillAppear(animated: Bool) {super.viewWillAppear(animated)//設置遠程管理UIApplication.sharedApplication().beginReceivingRemoteControlEvents()self.becomeFirstResponder()}
override func viewWillDisappear(animated: Bool) {super.viewWillDisappear(animated)//關閉遠程管理UIApplication.sharedApplication().endReceivingRemoteControlEvents()self.resignFirstResponder()}
override func canBecomeFirstResponder() -> Bool {return true}
?也不一定在viewController中設置,也可以在appDelegate中的applicationDidBecomeActive中設置結束遠程控制,在applicationDidEnterBackground中接收遠程控制,總之要當前

?類中繼承UIRespond,因為在激活遠程控制后要把它當成第一響應,重寫canBecomeFirstResponder()方法

?

?最后重寫remoteControlReceivedWithEvent方法,處理具體的上一曲,下一曲,暫停,播放等功能

override func remoteControlReceivedWithEvent(event: UIEvent) {if event.type == UIEventType.RemoteControl{switch event.subtype{case .RemoteControlTogglePlayPause: self.pauseAndPlayAction(self.playBtn); break;case .RemoteControlPreviousTrack: self.preBtnAction(self.preBtn); break;case .RemoteControlNextTrack: self.nextBtnAction(self.nextBtn); break;case .RemoteControlPlay: self.pauseAndPlayAction(self.playBtn); break;case .RemoteControlPause: self.pauseAndPlayAction(self.playBtn); break;default: break;}}}

4.上面已經完成了遠程的控制,但歌曲的信息,比如歌曲名,歌唱者,專輯和播放時間還沒設置呢。要完成這項功能就要用到MPNowPlayingInfoCenter

func configNowPlayingInfoCneter(song: Song){isConfigDuration = falsevar dic: NSMutableDictionary = NSMutableDictionary()//設置專輯名dic.setObject(song.albumtitle!, forKey: MPMediaItemPropertyAlbumTitle)//設置藝術家dic.setObject(song.artist!, forKey: MPMediaItemPropertyArtist)//設置歌名dic.setObject(song.title!, forKey: MPMediaItemPropertyTitle)//設置已經播放的時間dic.setObject(0.0, forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime)//設置歌曲的總時長dic.setObject(0.0, forKey: MPMediaItemPropertyPlaybackDuration)//設置鎖屏畫面let mArt: MPMediaItemArtwork = MPMediaItemArtwork(image: UIImage(named: "musicBg"))dic.setObject(mArt, forKey:MPMediaItemPropertyArtwork)MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = dic as [NSObject : AnyObject]} 在每次切換歌曲的時候調用。注意這里的播放時間MPMediaItemPropertyPlaybackDuration和MPNowPlayingInfoPropertyElapsedPlaybackTime


按照官方注釋

// The elapsed time of the now playing item, in seconds. // Note the elapsed time will be automatically extrapolated from the previously // provided elapsed time and playback rate, so updating this property frequently // is not required (or recommended.) @availability(iOS, introduced=5.0) let MPNowPlayingInfoPropertyElapsedPlaybackTime: String // NSNumber (double)一旦設置了過后,它將按照播放速率(默認為1.0)自動刷新,不需要你手動刷新。但這里有個小小的問題,如果你暫停播放音樂,但是這個ElapsedPlaybackTime任然在后臺默默的刷新,導致你再點擊播放時,顯示的播放時間與實際的播放時間不同,所以你在這里要做處理。我在暫停播放音樂后,再次點擊播放時重新設置了一下NowPlayingInfoElapsedPlaybackTime,使之與實際的播放時間相符

@IBAction func pauseAndPlayAction(sender: UIButton) {if audioPlayer.playbackState == MPMoviePlaybackState.Playing{audioPlayer.pause()}else{//重新設置當前播放時間MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = self.audioPlayer.currentPlaybackTimeaudioPlayer.play()}}

5.好了,大功告成了!你可以完美實現音樂的后臺播放和遠程控制了



? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這里要非常感謝參考的文章


總結

以上是生活随笔為你收集整理的iOS音乐播放器的后台播放和远程控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。