问题标签 [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.

0 投票
1 回答
217 浏览

ios - 为什么 Swift AVAudioPlayer 在 MPRemoteCommandCenter 播放命令后不改变状态?

环境是 iOS 13.6 和 Swift 5。我有一个非常简单的应用程序,可以在前台或后台成功播放 MP3 文件。我向它添加了 MPRemoteCommandCenter 播放和暂停命令处理程序。我在前台播放声音文件,然后暂停。

当我从锁定屏幕点击播放按钮时,我的代码调用 audioPlayer.play(),它返回 true。我听到声音再次开始播放,但播放器的当前时间没有提前。之后,锁定屏幕上的播放和暂停按钮什么都不做。当我再次将应用程序置于前台时,播放按钮会从我进入锁定屏幕之前的位置开始播放。

这是我的 AudioPlayer 类:

这是我的 RemoteCommandHandler 类:

我很乐意提供进一步所需的信息,因为我很困惑为什么这个相对简单的代码(在我看来)代码不起作用。

非常感谢您的帮助!

0 投票
0 回答
177 浏览

c# - MPRemoteCommandCenter 播放/暂停命令未正确更新

我已启用播放/暂停按钮,并为每个按钮添加了目标事件,但是当我在模拟器中单击按钮时,它总是调用播放按钮的目标事件和按钮的图像不能正确地从播放更新到暂停,反之亦然。有人对此有想法吗?

注意:要播放/暂停音频,我使用了 Plugin.MediaManager.Forms nuget(0.9.7 版)

0 投票
0 回答
290 浏览

ios - MPRemoteCommandCenter playCommand 与 togglePlayPauseCommand?

我正在构建一个使用 AVPlayer 播放音频文件的 iOS 媒体播放器。播放器一切正常。我现在正在研究从锁定屏幕和耳机控制媒体播放。我已经为MPRemoteCommandCenter.shared()'s实现了一个目标playCommandpauseCommand因此togglePlayPauseCommand

完成上述操作后,锁屏控件和耳机控件都可以正常工作。我的问题是,使用 playCommand/ pauseCommand 与 togglePlayPauseCommand 有什么区别

我注意到在我测试的某些设备上,当我删除 togglePlayPauseCommand 时,耳机按钮将不起作用。这让我知道有什么区别,但我不确定。澄清这一点的任何帮助都会很棒,谢谢!

更新: 经过更多测试,它似乎togglePlayPauseCommand用于播放/暂停有线耳机的媒体。而单独的playCommandpauseCommand用于播放/暂停无线蓝牙耳机(以及锁定屏幕)的媒体。仍然不是 100% 确定为什么需要两种单独的播放/暂停媒体方法...

0 投票
0 回答
62 浏览

objective-c - 在通话时处理来自 AirPods 的播放/暂停命令

是否有任何方法可以在保持来自同一应用程序的音频/视频通话时处理耳机命令?

我正在开发使用 CallKit 拨打电话的应用程序,最近我接到了一项任务,允许在用户双击 AirPods(下一曲目命令)时将通话静音。目前,任何操作都会导致通话结束,我找不到修改此行为的解决方法。FaceTime 和本地通话也发生了同样的事情。

到目前为止,我尝试使用 MPRemoteCommandCenter 来响应远程命令,例如

我所有的想法都失败了,因为回调没有被调用。在这一点上,我开始认为这是一个硬件限制。

0 投票
1 回答
110 浏览

ios - 为什么 addTarget 不会在 Swift 中被删除?

当我从屏幕返回并再次进入屏幕时,即使我删除了目标nextTrackCommand,也会多次调用目标viewWillDisappear。我做错了什么?

0 投票
0 回答
50 浏览

swift - 使用音乐播放器控制器时未接收远程命令中心事件

我正在尝试从远程命令中心接收关于何时点击播放/暂停按钮的通知,以便我可以适当地更新播放/暂停按钮的图像。但是,我没有收到有关何时按下播放命令/暂停命令的通知(即何时应该打印“轻按播放”或“轻按暂停”)。这是我第一次使用这个库,所以我跟着 Apples 文档,它说要使用 applicationMusicPlayer 或 applicationQueuePlayer 来实现一个音乐控制器来接收这些事件,但到目前为止我还不能。我不知道除了将其设置为 applicationQueuePlayer 之外是否还有其他需要做的事情。

这是我的代码,用于产生这种情况的非常简单的音乐播放器控制器:

0 投票
0 回答
139 浏览

ios - 如何在停用音频会话后恢复其他应用程序的音频播放以及如何在不混合的情况下在后台开始音频播放?

我正在使用IonicCapacitor构建一个 iOS 应用程序。我在 Capacitor 插件中使用AVFoundation,该插件提供了一种公共方法来播放可从远程 URL 访问的音频文件。基础工作,音频文件播放成功。现在我想正确处理中断和背景音频。通过背景音频,我的意思是在应用程序在后台时开始播放音频文件,而不是在之前在前台启动时继续在后台播放它。总而言之,应用程序的行为方式应如下:

  1. 如果另一个应用程序(例如 Spotify)正在播放音频而我的应用程序想要播放音频,则应该中断另一个应用程序,并且我的应用程序的音频应该开始播放而不会混合。
  2. 如果我的应用程序的音频播放完毕,其他应用程序的音频应该会继续播放。
  3. 我的应用程序必须能够在后台播放音频而无需混合。
  4. 我想在锁屏和通知中心显示播放/暂停按钮和音频标题。

我添加了背景模式音频功能。我使用AVPlayerAVAudioSessionMPNowPlayingInfoCenterMPRemoteCommandCenter,遵循最佳实践,尤其是关于音频会话的激活和停用以及中断处理。我跟着这个问题这个问题。我尝试了几种解决方案,但从未成功实现上述所有目标。到目前为止,我发现如下:

  • 目标 1. 以上很容易实现。只需激活音频会话而无需混合并开始播放音频。
  • 在我的应用程序的音频完成后,我停用了音频会话。不幸的是,如果我不使用远程命令或通知信息,我只能实现上述目标 2。这意味着,我的应用在锁屏和通知中心都没有音频控制 UI。MPNowPlayingInfoCenter 和 MPRemoteCommandCenter 的配置似乎会影响中断行为。据我所知,Apple 文档对此没有任何说明。
  • 我只有在设置选项 .mixWithOthers 时才设法开始在后台播放音频。苹果文档也没有说明这一点。

任何帮助将不胜感激。

罗尼

0 投票
1 回答
533 浏览

ios - 在范围内找不到 MPRemoteCommandCenter

我创建了一个音乐应用程序,现在我想添加一个功能来从锁定屏幕和控制中心控制音乐,但我收到错误消息,MPRemoteCommandCenter 不在范围内。

这是我的代码的外观。

我正在 XCode 12 中开发,但适用于 iOS 12.4。

0 投票
2 回答
128 浏览

swiftui - 在swiftui 2.0中无法捕获蓝牙耳机按钮单击事件

我试图在 SwiftUI 2.0 应用程序中单击蓝牙耳机按钮来简单地执行代码,但是在尝试了许多不同的代码之后,没有任何效果......有人解决了这个问题吗?

基于苹果文档和我在 StackOverflow ( https://stackoverflow.com/a/58249502/13207818 ) 上找到的一些答案,我尝试了这个简单的代码

当然根据Apple doc启用背景音频

甚至尝试激活我的应用音频会话:

但一切都失败了……

有人会知道我做错了什么,还是会遇到 swiftUI 2.0 的此类问题?

预先感谢您的支持

0 投票
1 回答
292 浏览

ios - 播放歌曲时播放/暂停按钮不更新

我正在构建一个可以与 CarPlay 集成的音乐应用程序,一切都很好……我可以在音乐播放器上显示艺术家姓名、标题、专辑名称和一些按钮控制器。但是,有一个问题是,当我从 CarPlay 播放任何歌曲时,CarPlay 上的按钮不会像 iOS 设备上的按钮那样更新,并且搜索时间不会移动。

我应该怎么办 ?我搜索了许多资源以找到解决方案,但仍然没有。

在此处输入图像描述

在此处输入图像描述

注意:我只是在模拟器(不是真实设备)上测试它。

这是 PlayingInfor 节目:

这是句柄 RemoteCommandEvent: