【iOS】锁屏界面、控制面板显示音乐播放

同时有效作用区域:AppleTV、AirPlay投射,车载系统显示等位置

所需材料

  • MediaPlayer.framework
    • MPNowPlayingInfoCenter
    • MPMediaItem

设定代码

import MediaPlayer

var nowPlayingInfo: [String : AnyObject] = [:]
nowPlayingInfo[MPMediaItemPropertyTitle] = title
nowPlayingInfo[MPMediaItemPropertyArtwork] = MPMediaItemArtwork(image : albumArtImg)
...
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = nowPlayingInfo

定义在 MPMediaItem 中的可用属性及对应值:

* MPMediaItemPropertyAlbumTitle              //NSString
* MPMediaItemPropertyAlbumTrackCount         //NSNumber of NSUInteger
* MPMediaItemPropertyAlbumTrackNumber        //NSNumber of NSUInteger
* MPMediaItemPropertyArtist                  //NSString
* MPMediaItemPropertyArtwork                 //MPMediaItemArtwork
* MPMediaItemPropertyComposer                //NSString
* MPMediaItemPropertyDiscCount               //NSNumber of NSUInteger
* MPMediaItemPropertyDiscNumber              //NSNumber of NSUInteger
* MPMediaItemPropertyGenre                   //NSString
* MPMediaItemPropertyPersistentID            //NSNumber of uint64_t
* MPMediaItemPropertyPlaybackDuration        //NSNumber of NSTimeInterval
* MPMediaItemPropertyTitle                   //NSString

定义在 MPNowPlayingInfoCenter 中的扩展属性

// 已播放的时间,用于显示播放进度
* MPNowPlayingInfoPropertyElapsedPlaybackTime   //NSNumber (double)

// 播放速率,通常为1.0,用于自动刷新播放进度
* MPNowPlayingInfoPropertyPlaybackRate          //NSNumber (double)

* MPNowPlayingInfoPropertyDefaultPlaybackRate   //NSNumber (double)
* MPNowPlayingInfoPropertyPlaybackQueueIndex    //NSNumber (NSUInteger)
* MPNowPlayingInfoPropertyPlaybackQueueCount    //NSNumber (NSUInteger)
* MPNowPlayingInfoPropertyChapterNumber         //NSNumber (NSUInteger)
* MPNowPlayingInfoPropertyChapterCount          //NSNumber (NSUInteger)

手动更新 MPNowPlayingInfoCenter 时机

  • 当前播放歌曲进度被拖动时
  • 当前播放的歌曲变化时
  • 播放暂停或者恢复时
  • 当前播放歌曲的信息发生变化时(例如Artwork,duration等)
参考

iOS音频播放 (八):NowPlayingCenter和RemoteControl

你可能感兴趣的:(【iOS】锁屏界面、控制面板显示音乐播放)