AXIsProcessTrustedWithOptions debifează caseta de confidențialitate> Accesibilitate când se rulează aplicația

În OSX 10.9, rulez următorul cod pentru a vedea dacă programul meu este de încredere:

 NSDictionary *options = @{(id)kAXTrustedCheckOptionPrompt: @YES};
 if(!AXIsProcessTrustedWithOptions((CFDictionaryRef)options))
  //Not trusted! ...

which opens the dialog to open System Preferences > Privacy > Accessibility to grant my application permission.

Când verificați caseta pentru a da permisiunile aplicației mele și rulați-o din nou, aplicația mea nu are încă permisiune, iar caseta de selectare nu este selectată.

Este suficient să rulați AXIsProcessTrustedWithOptions pentru a debifa această casetă din anumite motive.

3
Ați găsit o soluție la această problemă? Aceeași problemă apare și pentru aplicația la care lucrez.
adăugat autor Steffen Andersen, sursa
Hei, dacă nu ați găsit o soluție la această problemă, vă recomandăm să verificați această postare a firului -> devforums.apple.com/message/903480#903480 M-a ajutat, de asemenea, să vă asigurați că aveți codificat totul și nu modificați niciun fișier din pachetul de aplicații, deoarece acest lucru va corupe codarea și va determina resetarea AXIsProcessTrustedWithOptions pentru aplicația dvs.
adăugat autor Steffen Andersen, sursa
@sftsz Aplicația dvs. ar trebui să verifice întotdeauna permisiunea, deoarece utilizatorul ar fi putut să o schimbe în timp ce aplicația nu se execută.
adăugat autor Steffen Andersen, sursa
@SteffenAndersen așa că înseamnă că nici măcar nu am schimbat idul și versiunea pachetului (doar modificând numărul de construire), ar trebui să verific permisiunile pentru că schimb codul?
adăugat autor sftsz, sursa

1 răspunsuri

@ Steffen, ai dreptate. Re-construirea aplicației modifică semnătura și, prin urmare, trebuie să aibă încredere din nou.

Am scris un script care se execută înainte ca aplicația mea să fie executată în dezvoltare, mai degrabă decât să aibă încredere manuală în aplicație de fiecare dată:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access values ('kTCCServiceAccessibility', 'com.company.app', 0, 1, 0, NULL);"
1
adăugat