Skip to content

Instantly share code, notes, and snippets.

@atheken
Forked from deivuh/customURL.m
Last active August 29, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atheken/30c0ce9c91e1cd28b144 to your computer and use it in GitHub Desktop.
Save atheken/30c0ce9c91e1cd28b144 to your computer and use it in GitHub Desktop.
Here is what you need to do to register your app for a custom URL scheme (for the example we will use a "myapp" scheme).
1) In your Info.plist, add a new entry for CFBundleURLTypes:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>MyApp's URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string>
</array>
</dict>
</array>
2) Somewhere in your application's startup code (e.g. init), add this code:
- (void)registerMyApp {
[[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(getUrl:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
}
- (void)getUrl:(NSAppleEventDescriptor )event withReplyEvent:(NSAppleEventDescriptor )replyEvent {
NSString url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; // Now you can parse the URL and perform whatever action is needed
}
Related Tidbits:
In Mac OS X Tiger and later, you can call LSSetDefaultHandlerForURLScheme to register an app as the default handler for a protocol, as would be need for a common protocol such as http, or ftp.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment