2011-11-14 6 views
6

मैं एक ऐप्स जो applescript का उपयोग करता सफारी संपर्क करने के लिए टैब की सूची प्राप्त करने सैंडबॉक्स में चाहते हैं embedding सैंडबॉक्सिंग। फिर मैं उन डेटा को एक उद्देश्य सी trough NSAppleEventDescriptor में वापस प्राप्त करता हूं। मैं पहले ही अपनी हकों को com.apple.safari साथ com.apple.security.temporary-exception.apple-घटनाओं कुंजी जोड़ दिया है। जब मेरे एप्लिकेशन सैंडबॉक्स नहीं है मैं कोई समस्या नहीं है, लेकिन जब मैं इसे सैंडबॉक्स पर कोशिश मैं सिर्फ "अशक्त" प्राप्त डेटा के रूप में।एक उद्देश्य-सी एप्लिकेशन applescript

applescript टैब की सूची व एक्सएमएल के रूप में यह वापस जाने के लिए।

tell application "Safari" 
set listeSite to {{"http://www.deezer.com", "deezer"}} 
set resp to "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>" 
repeat with aWindow in windows 
repeat with aTab in tabs of aWindow 
set URLTab to URL of aTab 
repeat with aSite in listeSite   
if URLTab starts with item 1 of aSite then 
set oktabURL to URL of aTab 
set oktabWindowID to id of aWindow 
set resp to resp & "<site><url>" & oktabURL & "</url><windowID>" & oktabWindowID & "</windowID><type>" & item 2 of aSite & "</type></site>" 
end if 
end repeat 
end repeat 
end repeat 

return resp 

end tell 

उद्देश्य सी में वापस आ गया डेटा प्राप्त

NSString *path = [[NSBundle mainBundle] pathForResource:@"hello" ofType:@"scpt"];  
NSAppleScript *script = [[NSAppleScript alloc] initWithContentsOfURL:[NSURLfileURLWithPath:path] error:nil]; 
NSAppleEventDescriptor *result = [script executeAndReturnError:nil]; 
NSLog(@"result == %@", result); 
DescType descriptorType = [result descriptorType]; 
NSLog(@"descriptorType == %@", NSFileTypeForHFSTypeCode(descriptorType)); 
NSString *responseValue = [result stringValue]; 
NSLog(@"value == %@", responseValue); 
[label setStringValue:responseValue]; 
NSData *data = [result data]; 
NSXMLDocument *xmlResponse = [[NSXMLDocument alloc] initWithData:data options:(NSXMLNodePreserveWhitespace|NSXMLNodePreserveCDATA) error:nil]; 
NSLog(@"xml == %@", xmlResponse); 

संदेश मिला जब कोई सैंडबॉक्स

[Switching to process 6362 thread 0x0] 
2011-11-14 13:18:31.127 SongController[6362:407] result == <NSAppleEventDescriptor: 'utxt'("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><site><url>http://www.deezer.com/fr/index.php</url><windowID>4536</windowID><type>deezer</type></site>")> 
2011-11-14 13:18:31.128 SongController[6362:407] descriptorType == 'utxt' 
2011-11-14 13:18:31.129 SongController[6362:407] value == <?xml version="1.0" encoding="iso-8859-1"?><site><url>http://www.deezer.com/fr/index.php</url><windowID>4536</windowID><type>deezer</type></site> 
2011-11-14 13:18:31.130 SongController[6362:407] xml == <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?><site><url>http://www.deezer.com/fr/index.php</url><windowID>4536</windowID><type>deezer</type></site> 

संदेश मिला जब सैंडबॉक्स

[Switching to process 6380 thread 0x0] 
2011-11-14 13:20:21.233 SongController[6380:407] result == (null) 
2011-11-14 13:20:21.234 SongController[6380:407] descriptorType == '' 
2011-11-14 13:20:21.235 SongController[6380:407] value == (null) 
2011-11-14 13:20:21.235 SongController[6380:407] *** Assertion failure in -[NSTextFieldCell _objectValue:forString:errorDescription:], /SourceCache/AppKit/AppKit-1138.23/AppKit.subproj/NSCell.m:1564 
2011-11-14 13:20:21.236 SongController[6380:407] An uncaught exception was raised 
2011-11-14 13:20:21.237 SongController[6380:407] Invalid parameter not satisfying: aString != nil 
2011-11-14 13:20:21.241 SongController[6380:407] (
    0 CoreFoundation      0x00007fff8a8bc286 __exceptionPreprocess + 198 
    1 libobjc.A.dylib      0x00007fff9125dd5e objc_exception_throw + 43 
    2 CoreFoundation      0x00007fff8a8bc0ba +[NSException raise:format:arguments:] + 106 
    3 Foundation       0x00007fff8b3547d3 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 169 
    4 AppKit        0x00007fff886e1a09 -[NSCell _objectValue:forString:errorDescription:] + 160 
    5 AppKit        0x00007fff886e1963 -[NSCell _objectValue:forString:] + 19 
    6 AppKit        0x00007fff886e18c9 -[NSCell setStringValue:] + 41 
    7 AppKit        0x00007fff887e3084 -[NSControl setStringValue:] + 115 
    8 SongController      0x000000010000142f -[AppController sayHello:] + 495 
    9 CoreFoundation      0x00007fff8a8aba1d -[NSObject performSelector:withObject:] + 61 
    10 AppKit        0x00007fff887ca710 -[NSApplication sendAction:to:from:] + 139 
    11 AppKit        0x00007fff888b7bd7 -[NSMenuItem _corePerformAction] + 399 
    12 AppKit        0x00007fff888b790e -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 125 
    13 AppKit        0x00007fff88b54194 -[NSMenu _internalPerformActionForItemAtIndex:] + 38 
    14 AppKit        0x00007fff889e5ce5 -[NSCarbonMenuImpl _carbonCommandProcessEvent:handlerCallRef:] + 138 
    15 AppKit        0x00007fff8883151f NSSLMMenuEventHandler + 339 
    16 HIToolbox       0x00007fff8f4b6308 _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 1263 
    17 HIToolbox       0x00007fff8f4b5914 _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec + 446 
    18 HIToolbox       0x00007fff8f4cc6c7 SendEventToEventTarget + 76 
    19 HIToolbox       0x00007fff8f5129f5 _ZL18SendHICommandEventjPK9HICommandjjhPKvP20OpaqueEventTargetRefS5_PP14OpaqueEventRef + 398 
    20 HIToolbox       0x00007fff8f5f9645 SendMenuCommandWithContextAndModifiers + 56 
    21 HIToolbox       0x00007fff8f63fef9 SendMenuItemSelectedEvent + 253 
    22 HIToolbox       0x00007fff8f50bb07 _ZL19FinishMenuSelectionP13SelectionDataP10MenuResultS2_ + 101 
    23 HIToolbox       0x00007fff8f638909 _ZL19PopUpMenuSelectCoreP8MenuData5PointdS1_tjPK4RecttjS4_S4_PK10__CFStringPP13OpaqueMenuRefPt + 1660 
    24 HIToolbox       0x00007fff8f638bc8 _HandlePopUpMenuSelection7 + 621 
    25 AppKit        0x00007fff889e89b1 _NSSLMPopUpCarbonMenu3 + 3860 
    26 AppKit        0x00007fff88d911ba _NSPopUpCarbonMenu3 + 39 
    27 AppKit        0x00007fff889e6b16 -[NSCarbonMenuImpl popUpMenu:atLocation:width:forView:withSelectedItem:withFont:withFlags:withOptions:] + 322 
    28 AppKit        0x00007fff88c45b3e +[NSStatusBarButtonCell popupStatusBarMenu:inRect:ofView:withEvent:] + 673 
    29 AppKit        0x00007fff88c45de9 -[NSStatusBarButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 147 
    30 AppKit        0x00007fff887c863a -[NSControl mouseDown:] + 786 
    31 AppKit        0x00007fff887930e0 -[NSWindow sendEvent:] + 6306 
    32 AppKit        0x00007fff88c467fc -[NSStatusBarWindow sendEvent:] + 66 
    33 AppKit        0x00007fff8872b68f -[NSApplication sendEvent:] + 5593 
    34 AppKit        0x00007fff886c1682 -[NSApplication run] + 555 
    35 AppKit        0x00007fff8894080c NSApplicationMain + 867 
    36 SongController      0x0000000100001022 main + 34 
    37 SongController      0x0000000100000ff4 start + 52 
) 

पात्रता फ़ाइल

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>com.apple.security.app-sandbox</key> 
    <true/> 
    <key>com.apple.security.temporary-exception.apple-events 
com.apple.security.temporary-exception.apple-events 
</key> 
    <array> 
     <string>com.apple.systemevents</string> 
     <string>com.google.chrome</string> 
     <string>com.apple.safari</string> 
    </array> 
</dict> 
</plist> 

मुझे आशा है कि मैं दे दिया है क्या आप मेरी मदद की जरूरत है। धन्यवाद

+2

यह अपने कुंजी 'com.apple.security.temporary-exception.apple-घटनाओं' अपने .entitlements फ़ाइल में दोहराया गया है लगता है। या यह सिर्फ एक टाइपो है? – Andriy

+0

com.apple.systemevents के लिए ऐप्पल इवेंट अपवादों वाले ऐप्स मैक ऐप स्टोर से खारिज कर दिए जाएंगे। क्रोम और सफारी आमतौर पर ठीक है, लेकिन मामले-दर-मामले आधार पर। – AriX

उत्तर

1

जहां तक ​​मैं कह सकता हूं, आपका कोड ठीक काम करता है, एक बार जब मैं आपके एंटाइटेलमेंट प्लिस्ट में दोगुनी कुंजी को ठीक करता हूं।

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