2013-05-21 10 views
6

मुझे अपने ऐप में शेड्यूलिंग जोड़ने की ज़रूरत है। ताकि मेरा ऐप स्वचालित समय और दिनांक पर स्वचालित रूप से लॉन्च हो जाए। मैंने इसे 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 

उत्तर

1

अपनी नौकरी plist डालने की कोशिश करो यह आपके सैंडबॉक्स किए गए ऐप के लिए डेटा कंटेनर होगा।

मेरे मैक पर देखकर मैं देखता हूं कि फेसटाइम में दो निर्धारित नौकरी की योजना है, तो आप शायद एक उदाहरण के रूप में उपयोग कर सकते हैं।

+0

लेकिन कंटेनरों में कोई लॉन्चएजेंट निर्देशिका नहीं है। क्या मुझे इसे स्वयं बनाना है? – Aravindhan

+0

एक बार जब आप सैंडबॉक्स कर लेते हैं तो अधिकांश [पथ खोज एपीआई आपको उचित सापेक्ष पथ देना चाहिए] (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

+0

मैंने निर्देशिका बनाई और वहां plist डाल दिया। कृपया अद्यतन प्रश्न देखें। – Aravindhan

संबंधित मुद्दे