Вызов AXIsProcessTrustedWithOptions не работает после изменения значения параметра

Я тестирую права доступа с помощью AXIsProcessTrustedWithOptions.

Когда приложение запускается, значение возвращается правильно. Однако, если я изменю настройку в Системных настройках - ›Безопасность и конфиденциальность, пока приложение работает, вызов API по-прежнему возвращает предыдущее значение.

Это ошибка?

Вот пример кода:

bool checkIfAccessibilityEnabledAndDisplayPopup()
{
    // Method to check if accessibility is enabled
    // Passing YES to kAXTrustedCheckOptionPrompt forces showing popup
    NSDictionary *options = @{(bridge id)kAXTrustedCheckOptionPrompt: @YES};
    Boolean accessibilityEnabled = AXIsProcessTrustedWithOptions((CFDictionaryRef)options);
    return (!!accessibilityEnabled);
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
       NSLog(@"Starting");
       for (int i=0;i<100;i) {
           checkIfAccessibilityEnabledAndDisplayPopup();
           [NSThread sleepForTimeInterval:20.0f];
           NSDictionary *options = @{(__bridge id)kAXTrustedCheckOptionPrompt: @NO};
           Boolean b = AXIsProcessTrustedWithOptions((CFDictionaryRef)options);
           Boolean b1 = AXIsProcessTrusted();
           NSLog(@"accessibility AXIsProcessTrustedWithOptions--> %d AXIsProcessTrusted ---> 
           %d", b, b1);
       }
}

person RuLoViC    schedule 05.08.2020    source источник
comment
См. мой ответ (вроде связанного) - все может быть запутано, особенно на машине разработчика. В любом случае рекомендуемый способ - сказать пользователю включить его и перезапустить приложение, если оно не было включено. Это беспорядок с ошибками.   -  person zrzka    schedule 06.08.2020