2012-03-16 4 views
12

मैं जो शुरू की है एक कोको अनुप्रयोग पर काम कर रहा हूँ/जो इतनी तरह Info.plist फ़ाइल में पंजीकृत है एक कस्टम योजना के साथ URL का उपयोग सक्रिय:जब एक पंजीकृत यूआरएल योजना द्वारा एक ओएस एक्स ऐप लॉन्च किया जाता है, तो आप पूर्ण यूआरएल तक कैसे पहुंच सकते हैं?

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLName</key> 
     <string>Open myscheme:// URLs</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>myscheme</string> 
     </array> 
    </dict> 
</array> 

मेरा प्रश्न है, जैसे ही ऐप शुरू की है या सक्रिय, मैं कैसे बता सकता हूं कि यूआरएल किसने ऐप लॉन्च किया था? आईओएस पर, यह एप्लिकेशन के साथ आसान है: openURL: स्रोत आवेदन: एनोटेशन: UIAplplicationDelegate पर विधि क्योंकि यह एक NSURL उदाहरण पारित किया गया है।

मैं myscheme तरह यूआरएल के साथ अपने ऐप्स में डेटा में पारित करने के लिए सक्षम होना चाहते हैं: // करना/कुछ/भयानक

उत्तर

21

में अपने अनुप्रयोग प्रतिनिधि के -applicationWillFinishLaunching:, कार्य करें:

[[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleAppleEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL]; 

और handleAppleEvent:withReplyEvent: कुछ ऐसा दिखना चाहिए:

- (void)handleAppleEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent { 
    NSString *urlString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; 
    // do something with the URL string 
} 
+0

keyDirectObject क्या है और इसे कहां परिभाषित किया गया है? मुझे समझ में नहीं आता कि keyDirectObject का मान क्या होना चाहिए। धन्यवाद। – Joel

+1

उन लोगों के लिए जो मेरे जैसे सोच रहे हैं, "एक गायब प्रतीक के लिए वाक्यविन्यास त्रुटि के बिना keyDirectObject संकलित कैसे करता है?", यह एई/AppleEvents.h में एक enum मामले के रूप में परिभाषित किया गया है। किसी भी तरह एई/AppleEvents.h आपके ऐप में शामिल हो जाता है भले ही आप इसे सीधे शामिल न करें। – Joel

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