Может ли приложение в Mac App Store когда-либо получить доступ к специальным возможностям?

У меня есть приложение (созданное с помощью ElectronJS), которое полагается на доступ к специальным возможностям для прослушивания событий мыши/клавиатуры (через пакет iohook). Я хотел бы разместить его в Mac App Store, но оказалось, что:

  1. Mac App Store требует песочницу и
  2. Песочница не разрешает доступ к специальным возможностям.

Поэтому приложение в Mac App Store не может получить доступ к специальным возможностям. Это правильно или я что-то упускаю?




Ответы (1)


Вам нужно использовать AXIsProcessTrustedWithOptions, чтобы запросить доступ к разрешениям доступа.

Вот полный документ от Apple: https://developer.apple.com/documentation/applicationservices/1459186-axisprocesstrustedwithoptions

Пример:

let promptFlag = kAXTrustedCheckOptionPrompt.takeRetainedValue() as NSString
let myDict: CFDictionary = NSDictionary(dictionary: [promptFlag: true])
AXIsProcessTrustedWithOptions(myDict)

if (AXIsProcessTrustedWithOptions(myDict))
{
    //we have permission granted here
}
person Matthew Cawley    schedule 26.05.2020
comment
Будет ли это работать в приложении в Mac App Store (т. е. в песочнице) или оно будет работать только вне песочницы? У меня нет проблем с тем, чтобы приложение запрашивало разрешение на доступ в процессе разработки или производства для независимого распространения, но когда приложение помещается в изолированную программную среду для Mac App Store, оно не показывает приглашение, а системное консольное приложение сообщает мне, что я этого не делаю. у меня нет разрешения на запрос разрешения... Есть ли право, которое мне нужно использовать, чтобы иметь возможность запрашивать разрешение на доступ, или Apple просто решила, что приложения в песочнице не могут иметь такой уровень контроля (т. е. полное управление мышью/окном? )? - person sr3; 27.05.2020
comment
Вы можете отключить изолированную программную среду приложения в своем приложении или, в качестве альтернативы, вы захотите посмотреть на аппаратный уровень прав: developer.apple.com/library/archive/documentation/Miscellaneous/ Основное внимание здесь будет уделяться наиболее вероятно, это ключ доступа: com.apple.security.device.usb - person Matthew Cawley; 27.05.2020
comment
К сожалению, если эти права не дают вам достаточного контроля над устройствами, вам придется смотреть на внешнее распространение. - person Matthew Cawley; 27.05.2020