我正在开发一个Cocoa应用程序,该应用程序使用带有自定义方案的URL启动/激活,该方案在Info.plist文件中注册,如下所示:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Open myscheme:// URLs</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myscheme</string>
</array>
</dict>
</array>
我的问题是,一旦应用程序启动或激活,我如何判断启动应用程序的URL?在iOS上,使用UIApplicationDelegate上的-application:openURL:sourceApplication:annotation:方法很容易,因为它传递了一个NSURL实例。
我希望能够通过类似的URL将数据传递到我的应用程序中myscheme://do/something/awesome
在应用程序代理的-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
}