2012-03-16 15 views
12

/şöyle Info.plist dosyasının kayıtlı olduğu özel bir şeması ile URL'ler kullanarak aktive:Bir OS X uygulaması kayıtlı bir URL şemasıyla başlatıldığında, tam URL'ye nasıl erişirsiniz? Ben başlatılır bir kakao uygulaması üzerinde çalışıyorum

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

Sorum şu, uygulama başlatılır bir veya etkinleştirilmiş, uygulamanın hangi URL'yi başlattığını nasıl anlarım? IOS'ta, -application: openURL: sourceApplication: annotation: ile bir NSURL örneğinden geçirildiği için UIApplicationDelegate yönteminde bu işlem kolaydır.

Ben myscheme gibi URL'ler ile benim app içine verilerde geçmesi mümkün istiyorum: // do/In

cevap

21

/müthiş bir şey, uygulama temsilci en -applicationWillFinishLaunching: yapın:

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

Ve keyDirectObject ve nerede ne

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

tanımlanır edilir: handleAppleEvent:withReplyEvent: gibi görünmelidir? KeyDirectObject değerinin ne olması gerektiğini anlamıyorum. Teşekkürler. – Joel

+1

Benim gibi merak edenler için, "keyDirectObject, eksik bir sembol için sözdizimi hatası olmadan nasıl derlenir?", AE/AppleEvents.h dosyasında bir enum dosyası olarak tanımlanır. Her nasılsa, doğrudan dahil etmeseniz bile, AE/AppleEvents.h uygulamanıza dahil edilir. – Joel