Сбой Apple Script при запуске из приложения MacOS Swift - PullRequest
0 голосов
/ 20 сентября 2018

РЕШЕНИЕ: Мне нужно было сделать две вещи, чтобы решить мою проблему:

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)


У меня есть базовое MacOS-приложение на основе Swift.Я хотел бы использовать Apple Script для определения количества непрочитанных сообщений электронной почты в Mail.app.Я создал небольшой Apple Script и протестировал его в Script Debugger (он работает нормально).

Когда я запускаю тот же скрипт из моего приложения, хотя он не показывает, что приложение Mail не запущено (хотя оно и работает)is):

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 из приложения ранее.Это ошибка из-за проблем с разрешениями?

1 Ответ

0 голосов
/ 21 сентября 2018

Да, это проблема с разрешениями.

Ваше приложение помещено в изолированную программную среду, и вам необходимо указать соответствующие права.Добавьте это в файл прав вашего приложения:

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