Использование NSAppleEventsUsageDescription в Xamarin для получения элементов входа - PullRequest
0 голосов
/ 16 мая 2019

Мне нужно запустить AppleScript из моего кода, чтобы получить имя LoginItems.Я могу сделать это из проекта Xcode.Но когда я делаю то же самое с Xamarin, это терпит неудачу.

Что мне не хватает в проекте Xamarin?Любая помощь, чтобы получить логин Предметы будут оценены.

Xcode Код проекта:

NSString *script = @"tell application \"System Events\" to get the path of every login item";

NSAppleScript *appleScript = [[NSAppleScript alloc] initWithSource:script];

NSDictionary* errorDict;

NSAppleEventDescriptor *descriptor = [appleScript executeAndReturnError: &errorDict];

Xcode Project plist Значение: enter image description here Последнее значение:

Я делаю то же самое в Xamarin:

var script = "tell application \"System Events\" to get the path of every login item";
var appleScript = new NSAppleScript(script);
var descriptor = appleScript.ExecuteAndReturnError(out var errorInfo);

info.plist

enter image description here

Получаемое значение Xamarin errorInfo:

{{
    NSAppleScriptErrorAppName = "System Events";
    NSAppleScriptErrorBriefMessage = "Not authorized to send Apple events to System Events.";
    NSAppleScriptErrorMessage = "Not authorized to send Apple events to System Events.";
    NSAppleScriptErrorNumber = "-1743";
    NSAppleScriptErrorRange = "NSRange: {44, 4}";
}}

Но этого не должно произойти, так как я добавил Privacy часть в plist.

1 Ответ

1 голос
/ 16 мая 2019

Получение этого сообщения об ошибке / номера и наличие соответствующей записи в Info.plist:

<key>NSAppleEventsUsageDescription</key>
<string>StackOverflow needs access to your System Events ?</string>

Примечание : дважды проверьте файл Info.plist в редакторе редактирования и VS IDE, чтобы убедиться, что ключ NSAppleEventsUsageDescription определен правильно, как показано выше.

Означает, что вы не получаете всплывающее окно Security для предоставления разрешения.

enter image description here

Это означает, что пользователь отказал в доступе при первоначальном запросе.

Открыто:

System Preferences / Security & Privacy / Privacy Tab / Automation

Найдите ваше приложение в списке и предоставьте ему разрешения вручную:

enter image description here

Примечание. Я все время использую AppleScript | JavaScript для автоматизации macOS через Xamarin.Mac, так что я знаю, что проблема не в Xamarin. Если выясняется, что изначально не было получено разрешение на автоматизацию, я хотел бы услышать о проблеме, так как это единственная проблема, которую я когда-либо видел (весь мой код, 5+ лет, проверяет эту ошибку и направляет пользователю вручную исправить проблему, так как он отказал в доступе при первом запросе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...