erkennen das input-monitoring nicht erlaubt ist

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • erkennen das input-monitoring nicht erlaubt ist

    Nabend,

    Meine App reagiert auf Keyboard Eingaben. Viele Catalina Nutzer wissen nicht, das Keyboard Eingaben erst verarbeitet werden, wenn unter Sicherheit / Input-Monitoring erlaubt wird. Natürlich wird dann von einem Fehler ausgegangen.
    Nun versuche ich das zu erkennen und den Nutzer darauf zu stoßen, das er es explizit erlauben muss.

    Folgendes habe ich erfolglos probiert:

    IOHIDRequestAccess( kIOHIDRequestTypeListenEvent );

    Eigentlich sollte nun ein Prompt hochkommen, der den Nutzer fragt ob die App keystrokes verarbeiten darf. Nix passiert. Ich muss dazu sagen, die App ist nicht im App Store.
    Nach jeder Installation des DMG muss also einmalig unter Sicherheit die App erlaubt werden.

    Das einzige was funktioniert ist folgender Prompt für die Accessibility. Die benötige ich jedoch nicht.

    NSDictionary *const options=@{(__bridge NSString *)kAXTrustedCheckOptionPrompt: @YES};
    AXIsProcessTrustedWithOptions((__bridge CFDictionaryRef)options);

    Woran könnte das liegen ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von PiCiJi ()

  • "IOHIDRequestAccess" funktioniert wohl nur einmal per App, selbst wenn die App über das DMG neu installiert wird.

    Ich kann mich auch erinnern, dass ich einmal den Prompt gesehen habe, bevor ich den manuellen Aufruf durch "IOHIDRequestAccess" überhaupt probiert habe.

    Der Prompt wird automatisch durch "IOHIDManagerOpen" ausgelöst, aber wie gesagt nur einmal. Es ist also nicht notwendig einen manuellen Request abzusetzen.

    Dennoch egal ob durch "IOHIDRequestAccess" oder "IOHIDManagerOpen" funktioniert es nur beim ersten Mal.
    Ich versuche jetzt bei einem erfolglosen "IOHIDManagerOpen" wenigstens die "Input monitoring prefs" zu öffnen um dem User klar zu machen, es ist kein Bug das die Tastatur nicht abgefragt wird, sondern es erst erlaubt werden muss.

    [[NSWorkspace sharedWorkspace] openURL:[[self class] securitySettingsUrlForKey:@"Privacy_ListenEvent"]]; (gebe später info, ob das funktioniert hat)

    Um den vollen Prozess zu testen, müsste ich jedoch den erstmaligen Prompt wieder rein kriegen. Ich möchte dafür nicht die App umbenennen oder ein neues OS aufsetzen.
    Gibt es da noch andere Möglichkeiten ?
  • Quellcode

    1. if (IOHIDManagerOpen(hidManager, kIOHIDOptionsTypeNone) != kIOReturnSuccess) {
    2. #define V10_15 1700
    3. if (NSAppKitVersionNumber >= V10_15) {
    4. NSURL* uri = [NSURL URLWithString:[NSString stringWithFormat:@"x-apple.systempreferences:com.apple.preference.security?%@", @"Privacy_ListenEvent"]];
    5. [[NSWorkspace sharedWorkspace] openURL:uri];
    6. }
    7. }
    Ok somit lässt sich ab Catalina aufwärts bei einer nicht erfolgreichen Initialisierung der Tastatur das entsprechende Security Panel öffnen.
    Nun wäre es schön zu wissen, was beim aller ersten Öffnen der App in Kombination mit diesem Code Fragment passiert ? Da in diesem Fall eine Aufforderung des Nutzers dies zu erlauben erscheint.
    Wäre blöd wenn der Nutzer dort Zustimmung erteilt und trotzdem noch unnötigerweise das Panel aufspringt.
    Wo schreibt Apple permanente Infos zu einer App hin, zwecks Zurücksetzen.