iOS:是不是真的不可能获取第三方应用程序(如 Spotify)中正在播放的当前曲目的信息?

Posted

技术标签:

【中文标题】iOS:是不是真的不可能获取第三方应用程序(如 Spotify)中正在播放的当前曲目的信息?【英文标题】:iOS : is it really impossible to get info of current track being played in third-party apps (like Spotify)?iOS:是否真的不可能获取第三方应用程序(如 Spotify)中正在播放的当前曲目的信息? 【发布时间】:2017-06-20 17:12:04 【问题描述】:

到目前为止,我对此有许多相互矛盾的答案。

在this SO thread,据说使用:

let player = MPMusicPlayerController.systemMusicPlayer()
if let mediaItem = player.nowPlayingItem 
    // ...

但是,这只适用于 ios 播放器。例如,如果当前歌曲正在由 Spotify 播放,mediaItem 将是 nil

我了解 Apple 的政策不允许访问任何其他应用程序的数据。我现在唯一能做的就是在AVAudioPlayersecondaryAudioShouldBeSilencedHintisOtherAudioPlaying 的帮助下知道一首歌曲是否正在从另一个播放器播放。

但是,我想知道是否有其他方法可以访问它,例如使用Spotify 框架? (我完全不熟悉,这只是假设)。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

我不确定 iOS,但可以通过 AppleScript 从 Mac 上的 Spotify 读取当前曲目。我使用了 Objective C 中的这种技术。如果您有兴趣,我可以发布代码。

Spotify 在此处发布他们的 AppleScript API https://developer.spotify.com/applescript-api/

如果您正在寻找一种通用的方法来确定正在播放的内容,那么我认为您会感到失望。每个应用程序都有不同的方式来检索此信息。

【讨论】:

【参考方案2】:

所以是和不是。如果您只想专门检查 Spotify 是否正在播放,那么 Spotify iOS SDK 可能会为此类事情提供功能。我真的不知道那个 SDK 的功能。

我冒昧地猜测您的实际目标是查看是否有任何第三方框架在运行; Pandora、Tidal、Apple Music、Amazon Prime Music 等。在这种情况下,您需要为每个提供此类功能的框架提供框架。

为安全起见,应用程序彼此之间被沙盒化,所以是的,除了您是否有框架并且它提供了该功能之外,没有办法告诉当前的跟踪信息。

【讨论】:

以上是关于iOS:是不是真的不可能获取第三方应用程序(如 Spotify)中正在播放的当前曲目的信息?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在ios中获取已安装的应用程序

关于线程的执行顺序,可能真的只是你以为的你以为

IOS - 获取通知并决定做啥

对 Spring Data JPA @Query 进行单元测试是不可能的,真的吗?

Android检测设备是不是有root权限

如何判断ios中是不是安装了某个应用