问题标签 [mpremotecommandcenter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - CarPlay - 在 iOS 13 中显示正在播放的屏幕
我的应用程序已经是手机上当前的“正在播放的应用程序”(即所有必需的信息都已提供给MPNowPlayingInfoCenter
),并且它正确显示在锁定屏幕中,包括艺术家姓名、曲目标题、艺术品图像等。
根据文档,填充MPNowPlayingInfoCenter.default().nowPlayingInfo
和添加正确的目标/操作MPRemoteCommandCenter
应该足以确保当用户点击Now Playing
图标时在 CarPlay 中调用您的应用程序。
在 iOS 14 上,我设法通过推送到堆栈来实现上述目标CPNowPlayingTemplate
,这要归功于我在本文中发现的一些巧妙技巧。
不过,在 iOS 13 上,一切都基于可怕的MPPlayableContentManager
API,并且没有CPTemplateApplicationSceneDelegate
为基于音频的应用程序调用任何方法,我根本找不到方法来检测是否/何时显示“正在播放”屏幕。
MPNowPlayingInfoCenter
并且MPRemoteCommandCenter
配置正确 - 如上所述 - 但在 iOS 13 上点击 CarPlay 中的“正在播放”图标时,我的应用程序没有被拾取。
我认为这个 API会帮助我,但我不知道如何(它总是返回一个空数组)。
唯一的解决方法似乎是添加<key>UIBrowsableContentSupportsImmediatePlayback</key><true/>
到您的Info.plist
: Now Playing 得到正确显示,但它立即开始播放,这不是我想要的。
谁能提供一个可行的解决方案?
ios - 将 `AVSpeechSynthesizer` 与 `MPRemoteCommandCenter` 一起使用
我需要用来AVSpeechSynthesizer
向我的用户阅读文本。
用户将使用 AirPods 控制阅读,所以我需要使用MPRemoteCommandCenter
.
AVSpeechSynthesizer.write(_:toBufferCallback:)
现在,我需要使用创建播放列表来准备我的音频文件并使用AVQueuePlayer
.
有用。但是准备音频文件需要时间。我更喜欢AVSpeechSynthesizer.speak(_:)
直接在后台模式下使用,并通过MPRemoteCommandCenter
命令激活它。
这可能吗?或者也许有任何解决方法?
谢谢!
ios - 完成播放视频后,锁屏小部件不会消失
我正在开发像 Netflix 这样的应用程序,当用户观看视频时,他可以锁定屏幕并查看带有视频内容的锁定屏幕控制器。
问题 1
当应用程序回到前台时,用户退出播放器,再次锁定屏幕,但播放器控制器仍处于锁定屏幕中。
问题 2
用户观看视频后,退出播放器并进入另一个视频,当他锁定屏幕时,播放器锁屏控制器播放 2 个视频,当前一个和之前的一个。
据我了解,由于 MPRemoteCommandCenter 完成方法(playCommand、pauseCommand 等),播放器永远不会从内存中释放。
我的自定义播放器类设置锁屏控制器:
当我删除“commandCenter.playCommand.addTarget”时,锁定屏幕甚至不显示。
ios - 使用模拟器测试 CarPlay 音频
我使用 Swift / UIKit 开发了一个 iOS 广播音频应用程序,一切正常。
我想与 CarPlay 集成并获得所需的权利。
我相信我大部分都设置正确,因为我可以看到带有我的 CPListItems 的 CPListTemplate 并且在点击其中一个时,它会转到 CPNowPlayingTemplate 并且音频开始在模拟器中播放。
虽然一切似乎都运行良好,但是,有两个问题:
- 我似乎无法与 CPNowPlayingTemplate 播放/暂停按钮进行交互,我只是一直看到播放按钮,但点击它什么也没做
添加此代码后,我可以在设备的锁定屏幕上和通过命令中心执行此操作:
- 第二个问题再次出现在同一个屏幕上,我看不到任何元数据,例如艺术作品、歌曲名称和艺术家姓名 - 借助这些代码行,这些再次显示在设备的锁定屏幕和命令中心:
我是否需要设置其他任何东西,或者这些仅仅是 CarPlay 模拟器的限制?
谢谢
mpremotecommandcenter - 锁定屏幕后 MPNowPlayingInfoCenter 丢失设置
我正在使用 AVAudioPlayer 构建 iOS 音频应用程序,在 MPRemoteCommandCenter 中暂停播放后遇到问题。在重新打开设备时,我会收到显示正确 MPNowPlayingInfo 的锁定屏幕,但是一旦我重新启动音频,当前播放音频的信息就会被删除,我无法再播放所选音频。我已经在处理音频请求的 ViewController 中编写了 CommandCenter 代码,并且还尝试在单独的类中使用 CommandCenter 代码。一切都无济于事。我已经通过论坛搜索寻求帮助,但没有成功。基本上我需要知道在哪里设置命令中心,以便重新打开应用程序将继续显示正确的命令信息。任何帮助,将不胜感激。
audiokit - MPRemoteCommandCenter 在不使用 AVAudioPlayer 时如何发出播放状态信号
我有一个简单的 MIDI 播放器(Swift 5、SwiftUI、iOS14),想用 MPRemoteCommandCenter 切换播放/暂停命令。锁定屏幕的控制在以下设置下工作正常,但我正在努力寻找如何在从应用程序内部而不是锁定屏幕切换播放/暂停时通知 MPRemoteCommandCenter 我的播放器状态。在我的应用程序中播放或暂停不会更改锁定屏幕上的播放/暂停图标,但是我可以通过将播放速率设置为 0 来停止显示的播放位置和锁定屏幕上的进度。换句话说,唯一的问题是锁定屏幕上的播放/暂停图标不同步。
我觉得我应该在这里发出通知,但我没有找到文档。我有一个类似的使用 AVAudioPlayer 的音频媒体播放器,这只是神奇的工作,我猜 AVAudioPlayer 正在吐出所需的通知。有没有人有关于如何使用我自己的不使用 AVAudioPlayer 的播放器执行此操作的教程或建议?谢谢。
ios - 使用 MPRemoteCommandCenter 为 AVPlayer 和 AVAudioPlayer 添加当前时间和持续时间的位置
在我的应用程序内的屏幕上,我有一个用于音乐的 AVAudioPlayer 和一个用于视频的 AVPlayer。用户可以换出不同的歌曲和不同的视频,但一次只能播放一首。他们可以在 avPlayer 上播放 audioPlayer 或观看视频。
我有 MPRemoteCommandCenter 在使用暂停/播放/ff/rewind 时都可以正常工作。问题是我无法在锁定屏幕上显示当前时间或持续时间。我试过了,但它没有说明将代码放在哪里。
这是我尝试过的,这样每次用户切换歌曲或视频时,我都会获得新项目的所有可用数据:
声音的-
视频-
MPRemoteCommandCenter 与 AVAudioSession 一起在 viewDidLoad 中设置
ios - MPChangePlaybackPositionCommandEvent - 有没有办法像 UISlider 一样观察 .began、.moved、.ended、.cancelled?
我正在使用MPRemoteCommandCenter
锁定屏幕的滑块。有没有办法像普通的 UISlider 一样观察.began
、、、和?.moved
.ended
.cancelled
ios - AVPlayer 不响应来自蓝牙设备的命令
我的 ios 应用程序使用 AVQueuePlayer 播放音频。
播放/暂停控件在控制中心和 ios 锁定屏幕上正常工作,但不适用于从蓝牙设备调用的命令。例如,双击airpods或其他第三方蓝牙耳机时,我的应用程序中的回调永远不会被调用。
我在装有 iOS 15 的 iphone 8 plus 设备上运行。
在应用程序启动时,它会像这样设置音频会话:
该应用程序侦听这样的播放/暂停事件。
通过所有蓝牙设备播放正常。在锁定屏幕或控制中心,播放/暂停会导致“播放”和“暂停”被打印出来。但是点击airpods时没有打印任何内容。(点击 airpods 在任何其他音频应用程序中都可以正常工作。)
有什么想法可能会丢失吗?