如何在Mac命令行应用程序中获取自定义URL?

时间:2018-01-31 02:09:34

标签: objective-c macos cocoa

现在我想写一个小的CLI应用程序,它可以让自定义方案url做一些像启动其他应用程序的东西。 我找到了一种方法, 首先,编辑'info.plist'在'URL types'下添加'URL Schemes',例如我添加'mySchemes'项。 其次,在'AppDelegate'中安装一个事件处理程序,

-(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 *url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
    NSLog(@"%@",url);
    // Do something next   
}

但是我想在命令行应用程序中实现它,如何在没有cocoa框架的情况下获得此事件?我不需要UI

1 个答案:

答案 0 :(得分:1)

在Info.plist中设置LSUIElement将允许您在没有UI的情况下运行您的应用。来自Apple的Information Property List Key Reference

  

如果此键设置为YES,则启动服务将应用程序作为代理应用程序运行。代理应用程序不会出现在Dock或强制退出窗口中。虽然它们通常作为后台应用程序运行,但如果需要,它们可以到达前台以呈现用户界面。单击属于代理应用程序的窗口会使该应用程序前进以处理事件。