com.apple.iTunes AEDeterminePermissionToAutomateTarget всегда возвращает -600 - PullRequest
0 голосов
/ 11 октября 2018
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 в порядке.

/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/iTunes.app/Contents/Info.plist
com.apple.iTunes

PS, но если я использую идентификатор комплекта "com.apple.dt.Xcode", он работает!

PPS, я нашел репо https://github.com/melchor629/iTunes-Scrobblerи построить это.Это тоже работает.

1 Ответ

0 голосов
/ 24 октября 2018

Хороший вызов для клавиши NSAppleEventsUsageDescription - это необходимо, если вы связываетесь с SDK 10.14, - но если ваше приложение находится в изолированной программной среде, вам также потребуется соответствующее право на событие 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 для получения более подробной информации, включая способ указания обоих разрешений, но в зависимости от текущей версии ОС применяется только одно.

...