我的应用程序播放声音,并且实现了AVRoutePickerView,因此它可以通过AirPlay或蓝牙流式传输声音。一旦我点击AVRoutePickerView,上面的图像就会 pop ,但是图像和标题错误。图像和标题来自我之前玩过的Apple Music应用。如何更改此元数据?我试过配置MPNowPlayingInfoCenter时不走运。let albumArt = MPMediaItemArtwork(boundsSize:CGSize(width: 50, height: 50)) { sz in return UIImage(named: "MyImage")!}MPNowPlayingInfoCenter.default().nowPlayingInfo = [MPMediaItemPropertyTitle: "some title", MPMediaItemPropertyArtist: "some artist", MPMediaItemPropertyArtwork: albumArt]这就是我制作AVRoutePickerView的方式。import AVKitlet routePickerView = AVRoutePickerView.init(frame: myFrame)routePickerView.backgroundColor = UIColor.clearroutePickerView.tintColor = UIColor(named: someColor)routePickerView.activeTintColor = UIColor(named: someColor)soundController.contentView.addSubview(routePickerView)我的应用程序针对iOS11,并在iPhone 6和iPhone 7上进行了测试。请引导我以正确的方式。谢谢 最佳答案 >>更新除了使用MPNowPlayingInfoCenter对象提供“正在播放”信息外,似乎还需要使用MPRemoteCommandCenter对象设置远程事件处理程序(即使未使用)。另外,在应用播放音频之前,“正在播放”信息似乎不会更新。脚步: 1.设置远程控制事件处理程序。 在此示例中,我仅配置了pauseCommand,这是使“正在播放”信息正常工作所需的全部。func setupRemoteTransportControls() { // Get the shared MPRemoteCommandCenter let commandCenter = MPRemoteCommandCenter.shared() // Add handler for Pause Command commandCenter.pauseCommand.addTarget{ event in // Does nothing yet return .success }} 2.使用MPNowPlayingInfoCenter对象配置“正在播放”信息。 func setupNowPlayingInfo() { var nowPlayingInfo = [String : Any]() nowPlayingInfo[MPMediaItemPropertyTitle] = "My Song Title" if let image = UIImage(named: "MyImage") { nowPlayingInfo[MPMediaItemPropertyArtwork] = MPMediaItemArtwork(boundsSize: image.size) { size in return image } } MPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo} 3.创建“路线选择器” View 控件。 let routePickerView = AVRoutePickerView(frame: routView.bounds)routePickerView.backgroundColor = UIColor.clearroutView.addSubview(routePickerView) 4.播放音频并查看路线选择器。 如果您在播放应用程序音频之前查看路线选择器,则会保留正在播放的旧信息。希望现在可以使用!老答案您的实现看起来还不错。唯一的查询将是boundSize。它应该是艺术品的原始尺寸。在手册中:“请求处理程序以新请求的大小返回图像。请求的大小必须小于boundsSize参数。”看来大多数实现只是返回原始大小。问题可能出在您的AVRoutePickerView的实现上。您可以尝试将其放入调度队列中吗?DispatchQueue.main.async { let albumArt = MPMediaItemArtwork(boundsSize:CGSize(width: 50, height: 50)) { sz in return UIImage(named: "MyImage")!} MPNowPlayingInfoCenter.default().nowPlayingInfo = [MPMediaItemPropertyTitle: "some title", MPMediaItemPropertyArtist: "some artist", MPMediaItemPropertyArtwork: albumArt]}在我的音频流应用程序中,当应用程序在后台运行时,我提供了元数据以显示在控制中心和iOS锁定屏幕中。我使用MPVolumeView,它具有一个用于选择音频输出路径的按钮(自动处理AVRoutePickerView的实例化和显示)。我的实现如下(按照手册):var nowPlayingInfo = [String : Any]()nowPlayingInfo[MPMediaItemPropertyTitle] = "Song Title"nowPlayingInfo[MPMediaItemPropertyArtist] = "Song Artist"if let image = UIImage(named: "SongImage") { nowPlayingInfo[MPMediaItemPropertyArtwork] = MPMediaItemArtwork(boundsSize: image.size) { size in return image }}MPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo
07-26 09:39