ios - 设置 MPNowPlayingInfoCenter 与其他背景音频播放

标签 ios swift avfoundation mpnowplayinginfocenter

我正在尝试使用 MPMoviePlayerController 为 Swift 中的 iOS 应用程序播放视频。

我的目标是能够用 apple music 之类的东西播放系统音乐,然后打开我的应用程序并混入音频,但我希望我的应用程序能够控制 MPNowPlayingInfoCenter .

如何在设置 MPNowPlayingInfoCenter 的同时使用 AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: .MixWithOthers)

Google map 在设置 MPNowPlayingInfoCenter 时混入音频。以下是我尝试设置 MPNowPlayingInfoCenter 的方式:

func setMeta(){
    UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
    self.becomeFirstResponder()
    if let player = PlayWorkoutViewController.player{
        let coverArt = MPMediaItemArtwork(image: UIImage(named: "AlbumArt")!)
        let dict: [String: AnyObject] = [
            MPMediaItemPropertyArtwork: coverArt,
            MPMediaItemPropertyTitle:workout.title,
            MPMediaItemPropertyArtist:"Alex",
            MPMediaItemPropertyAlbumTitle:workout.program.title,
            MPNowPlayingInfoPropertyPlaybackRate: player.currentPlaybackRate,
            MPNowPlayingInfoPropertyElapsedPlaybackTime: player.currentPlaybackTime,
            MPMediaItemPropertyPlaybackDuration: player.playableDuration
        ]
        MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = dict
    }
}

当我尝试同时使用选项 (.MixWithOthers) 播放外部音乐时,上述功能有效,但当我尝试在外部播放时带有选项 (.MixWithOthers) 的音乐信息中心不会更新。

编辑 1:为了让事情变得非常清楚,我已经可以正常播放视频我正在尝试播放带有其他背景音频的视频,同时能够设置 MPNowPlayingInfoCenter。

最佳答案

这在 iOS 中目前是不可能的。即使只是将您的类别选项更改为 .MixWithOthers 也会导致您的 nowPlayingInfo 被忽略。

我的猜测是 iOS 只考虑将非混合应用程序包含在 MPNowPlayingInfoCenter 中,因为如果有多个混合应用程序正在播放,则不确定哪个应用程序会显示在(例如)控制中心中同时。

如果 iOS 使用尽力而为的方法来选择“正在播放的应用程序”,我会非常高兴,就像这样:

  1. 如果正在播放非混音应用,请选择它。否则..
  2. 如果只有一个混音应用在播放,请选择那个。否则..
  3. 如果有多个混音应用程序在播放,只需选择一个 :) 或者一个都不选,我都可以。

如果您也喜欢这种行为,我鼓励您向 Apple 提交错误。

关于ios - 设置 MPNowPlayingInfoCenter 与其他背景音频播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34563451/

相关文章:

ios - 调整容器 View 的高度以匹配嵌入式 UITableViewController

ios - AVCaptureVideoPreviewLayer 横向

ios - 如何在 UIDocumentPickerViewController 中设置要选择的最大文件数

ios - 如果用户强制退出,iOS 是否会将我的应用程序启动到后台?

swift - 在 Swift 中需要类似的函数 strtotime ("next monday")

swift - 如何在Xcode中调试 “precondition failure”?

ios - 我可以使用 AVCaptureSession 将 AAC 流编码到内存吗?

ios - 如何在 AVCaptureVideoPreviewLayer 上显示覆盖

ios - Xamarin iOS后台上传任务(iOS 7)——DidFinishEventsForBackgroundSession

iOS 13 > 当应用程序被杀死且不在后台时,通用应用程序链接不起作用