मैं एक ऐप्स जो 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>
मुझे आशा है कि मैं दे दिया है क्या आप मेरी मदद की जरूरत है। धन्यवाद
यह अपने कुंजी 'com.apple.security.temporary-exception.apple-घटनाओं' अपने .entitlements फ़ाइल में दोहराया गया है लगता है। या यह सिर्फ एक टाइपो है? – Andriy
com.apple.systemevents के लिए ऐप्पल इवेंट अपवादों वाले ऐप्स मैक ऐप स्टोर से खारिज कर दिए जाएंगे। क्रोम और सफारी आमतौर पर ठीक है, लेकिन मामले-दर-मामले आधार पर। – AriX