com.apple.iTunes AEDeterminePermissionToAutomateTarget始终返回-600

时间:2018-10-10 22:28:42

标签: swift macos macos-mojave

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并将其构建。也可以。

1 个答案:

答案 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,包括指定两种授权的一种方法,但是根据当前的操作系统版本,只有一种适用。