问题标签 [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 回答
327 浏览

ios - 获取点击事件锁屏控制(MPRemoteCommandCenter)

我已经实现了 Avplayer 来播放音频。我已经使用 MPRemoteCommandCenter 来访问锁定屏幕。我可以通过以下方式获得所有访问权限:

但我想检测用户何时从锁定屏幕点击音乐标题或徽标或播放器。它打开了我们的应用程序。有可能得到吗?

当用户从锁定屏幕点击音乐播放器时,我想打开一个控制器。

0 投票
0 回答
70 浏览

audiokit - 使用 MPRemoteCommandCenter 控制 AKSequencer

是否可以控制AKSequencerMPRemoteCommandCenter如果可以,需要什么设置?我在使用默认值显示和管理播放信息方面没有任何问题,AVAudioPlayer但它不适用于AudioKit.

MPRemoteCommandCenter永远不会出现。理想情况下,我希望能够在锁定屏幕上调用相应的事件sequencer.play()sequencer.stop()但我什至无法在锁定屏幕上显示控件。

我尝试过一种肮脏的技巧,比如播放基本的音频文件,AVAudioPlayer声音sequencer工作得很好,但控制中心不在那里。

如果我没有play在我的音序器上调用方法并AVAudioPlayer像往常一样继续播放,那么指挥中心将按预期工作。

0 投票
1 回答
681 浏览

ios - 如何在使用 AVPlayer 播放视频之前检测 AirPlay 是否处于活动状态?

我正在使用以下代码来检测 AirPlay 是否是当前选择的路线:

但是,这在非常特定的情况下不起作用。我的用例是知道在播放视频之前选择了空中播放。我有两个视图控制器,比如AB。出于测试目的,我在A上有一个计时器,它使用上面的代码每秒打印一次 AirPlay 是否处于活动状态。

A开始,我展示了模态视图控制器B,它基本上使用 播放视频AVPlayer并使用MPVolumeView. 如果我呈现B,等待视频播放然后将路由更改为 AirPlay,我可以看到更改反映在A上(它将开始打印true)。然后,如果我关闭B然后重新打开它,甚至可以在播放视频之前判断 AirPlay 是否处于活动状态,这正是我想要的。

但是,有一种情况是行不通的。

情况是(尽管看起来很奇怪),如果我使用 将目标添加到远程命令MPRemoteCommandCenter,我上面描述的行为就会改变!这是我添加目标的方式(在视图控制器B中):

我也在B中删除该目标deinit

好吧,这完全与所有与 AirPlay 相关的东西混为一谈:

  1. 如果我在视图控制器B上激活 AirPlay然后将其关闭,AirPlay 就会被停用。现在电流又portType变成.builtInSpeaker了。因此,在重新打开B(播放视频)之前,我无法判断 AirPlay 是否处于活动状态。

  2. 即使portType.builtInSpeaker关闭B之后,我仍然会收到trueif I call MPVolumeView().isWirelessRouteActive,这告诉我无线路由处于活动状态,但这不一定是 AirPlay(例如,它可能是蓝牙耳机)。

  3. 如果我重新打开B,视频开始播放后portType.builtInSpeaker到。.airPlay

  4. 音频路由更改通知也停止正常工作。观察AVAudioSession.routeChangeNotification时,有时不触发,触发时,用户信息AVAudioSessionRouteChangeReasonKey大部分时间为.unknown

对我来说,这显然是苹果方面的一个错误,但你们中有人碰巧知道替代方案吗?在播放视频之前,我基本上需要知道 AirPlay 是否处于活动状态。

谢谢!

0 投票
1 回答
849 浏览

ios - MPRemoteCommandCenter 禁用了所有控件

你好亲爱的同事我需要你的帮助。当我添加 MPChangePlaybackPositionCommand 时,我的所有控件(锁定屏幕上的播放/暂停/重播/下一曲目)都已自动禁用。锁屏上的播放滑块运行良好,但我无法按下任何控制按钮,原因是 - 我不知道。

我也试过这个:

我的代码很简单:

在此处输入图像描述

0 投票
1 回答
665 浏览

swift - Swift MPRemoteCommandCenter nextTrackCommand 被调用 3 次

我正在使用 MPRemoteCommandCenter 更改我的音乐广播应用程序中的歌曲。但是,当我从锁定屏幕按下下一曲目按钮时,它会跳出 3 步。

这是我的代码:

输出为: Next Next Next

但我只按了一次按钮。我该怎么做才能只输出一次 3 次?

0 投票
1 回答
1067 浏览

ios - 如何从通知中心删除 MPRemoteCommandCenter

如何MPRemoteCommandCenter.shared()从通知中心删除。我尝试了这段代码,但只有命令和操作被禁用。我需要从通知中心删除完整通知。当我们杀死应用程序时,它不会出现在通知栏中,当我移动到其他屏幕时,我希望做同样的事情。

0 投票
0 回答
307 浏览

ios - 无法为 AVPlayer 更新 iOS 远程命令中心?

我有一个简单的视频播放器(只是一个 AVPlayer,播放 M3U8 视频文件),我之前使用以下方法让它播放背景音频就好了:

现在我想自定义锁定屏幕上显示哪些按钮、有关正在播放的视频的信息以及这些按钮在按下时的行为。我尝试了以下方法,但没有运气:

尽管如此,我的锁屏仍然是这样的:

在此处输入图像描述

它看起来像MPRemoteCommandCenter并且MPNowPlayingInfoCenter可能不像描述的那样工作

我究竟做错了什么?

0 投票
0 回答
370 浏览

ios - 当 AVPlayer 暂停时,iPhone 锁屏控件不显示,我该如何解决?

我正在流式传输视频文件,但仅使用 AVPlayer 为其播放音频。我成功地能够播放/暂停,在后台继续播放,并与锁定屏幕控件交互以控制播放器。唯一的问题是,如果我暂停音频然后锁定手机,现在会显示锁定屏幕控件。但是,如果我从锁定屏幕暂停音频,控件仍会显示。

代码库很广泛,所以这里是一些相关的代码。

更新:我在评论中采纳了 Matt 的建议,现在我使用 mp3 文件来播放音频。我仍然遇到同样的问题,当音频暂停时,锁屏控件不显示。关于如何解决此问题的任何其他想法?正如我在评论中所说,我基本上想模仿 Apple 的 Podcast 应用程序。音频文件是流式传输的(而不是下载的),即使在暂停时也会显示锁定屏幕控件。

0 投票
0 回答
262 浏览

swift - iOS 13 MPRemoteCommandCenter 在后台模式后断开连接

嗨,任何人在使用 AVPlayerViewController 并将 MPRemoteCommandCenter 设置为控制中心时遇到问题。当应用程序进入后台时视频继续播放但控制中心断开连接?

我使用了这篇文章中的示例代码

https://medium.com/@quangtqag/play-a-video-and-continue-playing-audio-in-background-456ec139eae

在 ios 12 上完美运行,但在 ios 13 中,当应用程序进入后台时,您无法使用控制中心控制播放。

0 投票
1 回答
457 浏览

ios - AVAudioPlayer 在由 MPRemoteCommand 触发时“忘记”它正在播放

我正在尝试通过锁定屏幕上的远程命令中心播放音频文件并控制它的播放。

如果我执行以下操作:

  • 开始播放
  • 暂停播放
  • 锁定装置
  • 从锁屏开始播放 (MPRemoteCommandCenter)

然后不可能从锁屏暂停播放。按钮闪烁,没有任何反应。

我怎样才能解决这个问题?

更多详情如下:

  • 似乎在尝试暂停音频时,AVAudioPlayer 为 audioPlayer.isPlaying 返回“false”。
  • 这发生在我的 iPhoneXR、iPhoneSE 和 iPhone8 上的 iOS13.1 上。我没有其他设备可以测试
  • 日志表明 AVAudioPlayer.isPlaying 在开始播放时最初返回 true,但随后返回 false。播放器的 currentTime 也似乎停留在播放开始的时间附近。
  • 我的整个视图控制器都在下面(~100 行)。这是重现问题的最低要求。
  • 演示错误的这个示例项目也可以在 Github 上找到

导入 UIKit 导入 MediaPlayer

这会记录以下内容(添加了我的 // 注释):

我无计可施。帮助我 StackOverflow——你是我唯一的希望。

编辑:我也试过

总是返回 .success

忽略 audioPlayer 状态,只是按照远程指挥中心所说的那样做

这两种情况都会导致一次pause在锁定屏幕上点击时仍然存在的错误。随后的轻敲将音频重置为原始暂停位置,然后正常工作。

更新

  • 用 AVPlayer 替换 AVAudioPlayer 似乎使问题完全消失了!我有理由确定这是 AVAudioPlayer 现在的一个错误。
  • 切换到 AVPlayer 的必要步骤在这个公共差异中
  • 我使用了我的一张开发人员问题票并将这个问题提交给 Apple。当我收到他们的回复时,我会发布答案。

更新 2

  • Apple 开发支持确认,截至 2019 年 12 月 5 日,此问题没有已知的解决方法。我已向 feedbackassistant.apple.com 提交了一个问题,并会在发生变化时更新此答案。