AXIsProcessTrustedWithOptions अनचेक गोपनीयता> एक्सेसिबिलिटी चेकबॉक्स जब ऐप चलाया जाता है

ओएसएक्स 10.9 में, मैं यह देखने के लिए निम्न कोड चला रहा हूं कि मेरा प्रोग्राम विश्वसनीय है या नहीं:

 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.

जब मैं अपनी ऐप अनुमति देने के लिए बॉक्स को चेक करता हूं और इसे फिर से चलाता हूं, तो मेरे ऐप में अभी भी अनुमति नहीं है और चेकबॉक्स अब अनचेक किया गया है।

बस कुछ कारणों से उस बॉक्स को अनचेक करने के लिए AXIsProcessTrustedWithOptions चल रहा है।

3
जोड़ा संपादित
विचारों: 2
क्या आपको इस मुद्दे का समाधान मिला है? जिस ऐप पर मैं काम कर रहा हूं उसके लिए एक ही समस्या हो रही है।
जोड़ा लेखक Steffen Andersen, स्रोत
अरे, अगर आपको इस समस्या का हल नहीं मिला है, तो आप इस थ्रेड पोस्ट को देखना चाहेंगे -> devforums.apple.com/message/903480#903480 इससे मेरी मदद मिली, यह भी सुनिश्चित करें कि आपके पास सबकुछ कोडित है और ऐप बंडल में किसी भी फाइल को नहीं बदल रहा है, क्योंकि इससे कोडिंग को दूषित कर दिया जाएगा और AXIsProcessTrustedWithOptions को रीसेट कर देगा आपका ऐप
जोड़ा लेखक Steffen Andersen, स्रोत
@sftsz आपके आवेदन को हमेशा अनुमति की जांच करनी चाहिए, क्योंकि एप्लिकेशन चालू नहीं होने पर उपयोगकर्ता इसे बदल सकता था।
जोड़ा लेखक Steffen Andersen, स्रोत
@SteffenAndersen का मतलब यह भी है कि मैंने बंडल आईडी और संस्करण (केवल बिल्ड नंबर बदलना) नहीं बदला है, मुझे अनुमतियों की जांच करनी चाहिए क्योंकि मैं कोड बदलता हूं?
जोड़ा लेखक sftsz, स्रोत

1 उत्तर

@ स्टीफन, आप सही हैं। ऐप को दोबारा बनाने से हस्ताक्षर बदल जाता है, और इसलिए फिर से भरोसा किया जाना चाहिए।

मैंने एक स्क्रिप्ट लिखी जो मेरे ऐप को मैन्युअल रूप से ऐप पर भरोसा करने के बजाए विकास में निष्पादित करने से पहले चलाया जाता है:

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
जोड़ा