मुझे अपने ऐप में शेड्यूलिंग जोड़ने की ज़रूरत है। ताकि मेरा ऐप स्वचालित समय और दिनांक पर स्वचालित रूप से लॉन्च हो जाए। मैंने इसे Scheduling Timed Jobs का संदर्भ देकर किया है। मैंने प्लस फ़ाइल को /Users/username/Library/LaunchAgents
में शेड्यूलिंग के लिए रखा है। यह गैर-सैंडबॉक्स वाले ऐप में अच्छी तरह से काम करता है, लेकिन यह एक सैंडबॉक्स वाले ऐप में काम नहीं कर रहा है। मैं शेड्यूलिंग फ़ाइल को /Users/username/Library/LaunchAgents
पथ में जोड़ने में सक्षम नहीं हो सकता। यह मुझे त्रुटिसैंडबॉक्स किए गए ऐप में शेड्यूलिंग कैसे जोड़ें?
Error Domain=NSCocoaErrorDomain Code=513 "“com.sample.schedule.plist” couldn’t be copied because you don’t have permission to access “LaunchAgents”." UserInfo=0x100114f10 {NSSourceFilePathErrorKey=/Users/username/Library/Developer/Xcode/DerivedData/SchedulingInSandbox-cernhnigkuqhehbndryxlekpiiiu/Build/Products/Debug/SchedulingInSandbox.app/Contents/Resources/com.sample.schedule.plist, NSUserStringVariant=(
Copy
), NSDestinationFilePath=/Users/username/Library/LaunchAgents/com.sample.schedule.plist, NSFilePath=/Users/username/Library/Developer/Xcode/DerivedData/SchedulingInSandbox-cernhnigkuqhehbndryxlekpiiiu/Build/Products/Debug/SchedulingInSandbox.app/Contents/Resources/com.sample.schedule.plist, NSUnderlyingError=0x1001132d0 "The operation couldn’t be completed. Operation not permitted"}
मैं भी पात्रता में LaunchAgents पथ को शामिल किया है देता है।
<key>com.apple.security.temporary-exception.files.home-relative-path.read-write</key>
<array>
<string>/Library/LaunchAgents/</string>
</array>
लेकिन फिर भी मैं लॉन्चएजेंट्स निर्देशिका में स्कीकलिंग प्लिस्ट जोड़ने में सक्षम नहीं हूं। चाहे मैं सही तरीके से कर रहा हूं या सैंडबॉक्स किए गए ऐप में शेड्यूलिंग करने का एक और तरीका है।
संपादित करें 1:
मैं मैन्युअल /Library/Containers/LaunchAgents
में फ़ोल्डर बनाने और वहाँ plist डाल मैं यह त्रुटि हो रही है, तो:
/Users/<username>/Library/Containers/<my app identifier>/Data/Library/LaunchAgents/<my app identifier>.<somename>.plist
में
Could not open job overrides database at: /private/var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plist: 1: Operation not permitted
launch_msg(): Socket is not connected
लेकिन कंटेनरों में कोई लॉन्चएजेंट निर्देशिका नहीं है। क्या मुझे इसे स्वयं बनाना है? – Aravindhan
एक बार जब आप सैंडबॉक्स कर लेते हैं तो अधिकांश [पथ खोज एपीआई आपको उचित सापेक्ष पथ देना चाहिए] (https://developer.apple.com/library/mac/#documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html)। उदाहरण के लिए यदि आप [NSHomeDirectory] का उपयोग करते हैं (https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/ NSHomeDirectory) यह आपको ऐप के कंटेनर में रखेगा। फिर आप अपनी प्रतिलिपि बना सकते हैं या बना सकते हैं। – macshome
मैंने निर्देशिका बनाई और वहां plist डाल दिया। कृपया अद्यतन प्रश्न देखें। – Aravindhan