解决方案: 我需要做两件事来解决我的问题:
1)将以下内容添加到我的应用的权利文件中:
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>com.apple.Mail</string>
</array>
2)将以下内容添加到我的应用的plist中:
<key>NSAppleEventsUsageDescription</key>
<string>Please allow "your message here"</string>
这适用于Mojave 10.14(18A389)
我有一个基于Swift的基本macOS应用。我想使用Apple Script来确定Mail.app中未读电子邮件的数量。我创建了一个小的Apple Script,并在Script Debugger中对其进行了测试(工作正常)。
当我从我的应用程序中运行相同的脚本时,尽管该脚本失败,表明该邮件应用程序未运行(即使已运行):
let unreadEmailsScript = """
tell application "Mail"
get unread count of inbox
end tell
"""
if let scriptObject = NSAppleScript(source: unreadEmailsScript) {
var errorDict: NSDictionary? = nil
scriptObject.executeAndReturnError(&errorDict)
if let error = errorDict {
print(error)
}
}
输出:
{
NSAppleScriptErrorAppName = Mail;
NSAppleScriptErrorBriefMessage = "Application isn't running.";
NSAppleScriptErrorMessage = "Mail got an error: Application isn't running.";
NSAppleScriptErrorNumber = "-600";
NSAppleScriptErrorRange = "NSRange: {33, 12}";
}
我以前从未在应用程序内执行过Apple Script。此错误是由于权限问题引起的吗?
答案 0 :(得分:0)
是的,这是一个权限问题。
您的应用已沙箱化,您必须指定适当的权利。将此添加到您的应用的权利文件中:
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>com.apple.Mail</string>
</array>