从我的应用程序内部控制其他应用程序的音乐播放?

Posted

技术标签:

【中文标题】从我的应用程序内部控制其他应用程序的音乐播放?【英文标题】:Control other apps music playing from inside my app? 【发布时间】:2017-08-11 12:25:32 【问题描述】:

在我的应用程序中,如果任何其他应用程序已经在播放音乐,我想控制stop/playskipToNextgoToPrevious 歌曲。类似于控制中心已经做的事情,但我希望这些按钮在我的应用程序中可用。

我看到MPMusicPlayerController 允许 Apple Music 应用使用 skipToPreviousItem()skipToBeginning()skipToNextItem()。但我正在寻找一种适用于任何其他应用程序(SoundCloud、Spotify、Deezer 等)的解决方案,就像控制中心一样。

有什么方法可以控制在我的应用内播放的其他应用音乐吗?

【问题讨论】:

一句话,没有。沙盒会阻止您直接访问不在您的应用组中的应用。现在,如果所说的应用程序有一个 API.... 我知道沙盒。但是播放音乐使用共享资源,并且在系统级别上有一些支持。例如,我可以使用AVAudiosession.sharedInstance().isOtherAudioPlaying 来检查是否有任何播放。如果您从屏幕底部向上滑动,我希望能在控制中心看到类似下一个/停止/上一个的内容。 请记住,您提到的所有内容MPMusicPlayerControllerAVAudioSession、“Apple Music”和“控制中心”)都来自 Apple - 谁使您正在编程的操作系统。这符合我对“展示我”的个人测试 - 向我展示另一个可以做你想做的事情的应用程序。除非这些第三方应用程序在 iOS 沙盒的约束下工作,向你开放他们的沙盒——深度链接、API 等等——我认为你无法做到这一点。 【参考方案1】:

有两种可能的解决方法: A) 现在有一个Spotify App Remote SDK https://github.com/spotify/ios-app-remote-sdk#sptappremoteuserapi。您可以使用它直接控制 Spotify 应用。

B) 如果您只能控制 stop/play,您可以接管将停止 Spotify 的音频会话,然后结束您的会话,希望 Spotify 会自动恢复。

【讨论】:

以上是关于从我的应用程序内部控制其他应用程序的音乐播放?的主要内容,如果未能解决你的问题,请参考以下文章

如何将音乐从我的应用程序切换到 ipod

在 Swift (macOS) 中控制背景音乐

如何将消息发送到 Android 中的其他应用程序?

每当我的应用播放音乐时如何停止其他应用音乐

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

在后台播放音乐:未触发 AVAudioSessionInterruptionNotification