import ScriptingBridge
class iTunesAccess {
static func requestAccess() -> Bool {
guard #available(OSX 10.14, *) else {
return true
}
if var addressDesc = NSAppleEventDescriptor(bundleIdentifier: "com.apple.iTunes").aeDesc?.pointee {
let appleScriptPermission = AEDeterminePermissionToAutomateTarget(&addressDesc, typeWildCard, typeWildCard, true)
AEDisposeDesc(&addressDesc)
return appleScriptPermission == noErr
}
return false
}
}
info.plist:
<key>NSAppleEventsUsageDescription</key>
<string>somedescriprtion</string>
iTunes正在运行,但我总是得到-600 osstatus。 我该如何解决? iTunes捆绑包ID很好。
/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/iTunes.app/Contents/Info.plist
com.apple.iTunes
P.S,但如果我使用“ com.apple.dt.Xcode”捆绑包ID,则可以使用!
P.P.S我找到了仓库https://github.com/melchor629/iTunes-Scrobbler并将其构建。也可以。
答案 0 :(得分:4)
在NSAppleEventsUsageDescription
键上进行良好调用(如果您链接到10.14 SDK,则是必需的),但是如果您的应用已被沙箱化,则还需要适当的Apple事件授权:com.apple.security.scripting-targets
,或com.apple.security.temporary-exception.apple-events
(如果需要)。有关更多详细信息,请参见https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AppSandboxTemporaryExceptionEntitlements.html,包括指定两种授权的一种方法,但是根据当前的操作系统版本,只有一种适用。