2

解决方案: 我需要做两件事来解决我的问题:

1)将以下内容添加到我的应用程序的权利文件中:

<key>com.apple.security.temporary-exception.apple-events</key>
<array>
  <string>com.apple.Mail</string>
</array>

2)将以下内容添加到我的应用程序列表中:

<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。这个错误是由于权限问题吗?

4

1 回答 1

1

是的,这是一个权限问题。

您的应用程序是沙盒化的,您必须指定适当的权利。将此添加到您的应用程序的权利文件中:

<key>com.apple.security.temporary-exception.apple-events</key>
<array>
    <string>com.apple.Mail</string>
</array>
于 2018-09-20T22:04:07.620 回答