使用 ScriptingBridge 在 macOS 中读取当前播放的曲目不起作用
Reading currently playing track in macOS using ScriptingBridge not working
我正在尝试使用 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没有运行ning的时候,会启动吗?为什么?
是否有其他方法可以获取 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
和 运行 应用程序。
matt 提供的解决方案有效。
我注意到如果我将以下键添加到权利文件中,沙盒功能仍然可以启用:
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>com.apple.iTunes</string>
</array>
我正在尝试使用 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没有运行ning的时候,会启动吗?为什么?
是否有其他方法可以获取 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
和 运行 应用程序。
matt 提供的解决方案有效。
我注意到如果我将以下键添加到权利文件中,沙盒功能仍然可以启用:
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>com.apple.iTunes</string>
</array>