我在Mac cocoa应用程序中实现了自定义URL方案。它有效,但我有几个问题。
1)我在哪里将此代码放在基于文档的应用程序中以处理URL事件?我已经在-windowControllerDidLoadNib:
中使用了它,但如果应用已关闭则无法正常工作,因为文档尚未设置。
NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
[appleEventManager setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
2)如何将解析后的数据从URL发送到新文档?我正在使用-handleGetURLEvent:withReplyEvent:
这样的方法创建新文档。
[[NSDocumentController sharedDocumentController] newDocument:nil];
答案 0 :(得分:0)
1)我在哪里将此代码放在基于文档的应用程序中以处理URL事件?
最有可能在您的应用程序中委托applicationDidFinishLaunching方法。
2)如何将解析后的数据从URL发送到新文档?
- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event
withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
NSString *urlString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
NSLog(@"URL: %@", urlString);
NSString *httpString = [urlString substringFromIndex:7];
NSLog(@“HTTP URL: %@", httpString);
[self openNewDocumentAtURL:[NSURL URLWithString:httpString]];
}
- (void)openNewDocumentAtURL:(NSURL *)absoluteURL {
NSDocumentController *docController = [NSDocumentController sharedDocumentController];
[docController newDocument:nil];
[(ResponseDocument *)[docController currentDocument] updateURL:absoluteURL];
}