gpt4 book ai didi

swift - 使用 ScriptingBridge 在 macOS 中读取当前播放的轨道不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 06:11:30 26 4
gpt4 key购买 nike

我正在尝试使用 ScriptingBridge 读取 iTunes 当前正在播放的轨道。我在这里发现了其他几个线程,但似乎没有一个适合我(macOS Mojave 和 iTunes 12.9.4)。

我使用以下命令创建了 iTunes.h 文件:

sdef /Applications/iTunes.app | sdp -fh --basename "iTunes" 

我正在创建 Scripting Bridge 的一个实例,如下所示:

if let itunes: AnyObject = SBApplication(bundleIdentifier: "com.apple.iTunes")
{
if itunes.isRunning
{
Swift.print("iTunes is running...")
}

Swift.print(itunes.currentTrack?.name)
Swift.print(itunes.currentTrack?.album)
}

代码编译正常。当我运行代码时,我得到以下输出:

iTunes is running...
nil
nil

currentTrack 为 nil,但 iTunes 正在播放歌曲。我在这里错过了什么?我已经尝试禁用沙箱,但无济于事。我使用的是 macOS Mojave、Xcode 10.2 和 iTunes 12.9.4。另外,当iTunes没有运行时,它会启动吗?为什么?

是否有其他方法可以获取iTunes当前正在播放的歌曲?

最佳答案

关键是你必须在某个时候看到说

的对话框

MyApp wants access to control “iTunes“. Allowing control will provide access to documents and data in “iTunes“, and to perform actions within that app.

如果你还没有看到那个对话框:

  • 在权利中,关闭沙盒。

  • Info.plist 中,添加一个 Privacy - AppleEvents Sending Usage Description 条目,其值是任意字符串。

运行应用程序。如果它仍然不起作用,那么在终端中这样说:

tccutil reset AppleEvents

然后再次运行该应用。

关于swift - 使用 ScriptingBridge 在 macOS 中读取当前播放的轨道不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55868521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com