我正在尝试用 Swift 2.2 (Xcode 7) 编写一个可以播放音频的 iOS 9 应用程序。我所有的文件都是从互联网上读取的,所以我选择了StreamingKit并且可以从多个 ViewController 在后台播放,所以我创建了一个存储音频播放器实例的单例。
我成功让播放器在后台播放音频并在 NowPlayingInfoCenter 中显示信息,但我无法获得工作持续时间我得到了这个结果
当我开始播放我的文件时,我用这些行初始化 MPNowPlayingInfo
var nowPlayingInfo : Dictionary<String, AnyObject> = [
MPNowPlayingInfoPropertyPlaybackRate : 1
]
if audioTitle != nil {
nowPlayingInfo[MPMediaItemPropertyTitle] = audioTitle
}
else {
nowPlayingInfo[MPMediaItemPropertyTitle] = NSLocalizedString("app_name", comment: "")
}
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = nowPlayingInfo
当缓冲完成时,我用这些行设置附加信息
var nowPlayingInfo = MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo
//Time
nowPlayingInfo!["MPNowPlayingInfoPropertyElapsedPlaybackTime"] = NSNumber(double: self.audioPlayer.progress)
nowPlayingInfo!["MPMediaItemPropertyPlaybackDuration"] = NSNumber(double: self.audioPlayer.duration)
//Is playing
nowPlayingInfo!["MPNowPlayingInfoPropertyPlaybackRate"] = NSNumber(double: self.isPlaying ? 1.0 : 0.0)
//State
if isError {
nowPlayingInfo![MPMediaItemPropertyArtist] = NSLocalizedString("player_error", comment: "")
} else if isLoading {
nowPlayingInfo![MPMediaItemPropertyArtist] = NSLocalizedString("player_loading", comment: "")
} else {
nowPlayingInfo![MPMediaItemPropertyArtist] = NSString(string: self.audioArtist!)
}
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = nowPlayingInfo
上面我的 NSNumber 构造函数中传递的值的示例(从调试器中检索):进度 = 1.892426303854875 持续时间 = 62.85865814546887
我还尝试像这个答案一样传递格式化的 NSString ,例如在调试器中检索到的这些值:进度 = 0:02 持续时间 = 1:03
播放器时长和搜索栏还是和截图一样
任何人都可以帮助我吗?谢谢