喂!我将我的Mac应用程序设置为在myApp上启动://协议在浏览器中调用,如Safari,但是当该协议调用该应用程序时,我似乎无法执行操作。委托方法必须类似于:
- (void)applicationDidBecomeActiveByURL:(NSURL *)protocol;
我不知道这是因为我是Mac新手,但我对iPhone开发有点擅长,所以我知道iPhone开发方式,但不是Mac开发方式
答案 0 :(得分:8)
您需要使用NSAppleEventManager
。你知道,AppKit早于互联网,OS X仍然主要用于不在URL方案上的文件等.UIKit有时更好。阅读此Apple doc。
实践中:首先,在applicationWillFinishLaunching:
-(void)applicationWillFinishLaunching:(NSNotification *)aNotification {
NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
[appleEventManager setEventHandler:self
andSelector:@selector(handleGetURLEvent:withReplyEvent:)
forEventClass:kInternetEventClass andEventID:kAEGetURL];
}
然后实现处理程序
- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
NSString *urlAsString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
... do something ...
}
您还需要在Info.plist
注册您的方案。