gpt4 book ai didi

macos - 除非应用程序已在运行,否则 URL 方案监听器无法工作

转载 作者:行者123 更新时间:2023-12-03 17:12:13 25 4
gpt4 key购买 nike

当在浏览器中单击其自定义 URL 方案时,我的 Mac 应用程序需要打开并转到特定页面。为了实现这一点,我在 applicationDidFinishLaunching 上添加了一个 NSAppleEventManager

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

NSAppleEventManager *eventManager = [NSAppleEventManager sharedAppleEventManager];
[eventManager setEventHandler:self
andSelector:@selector(handleGetURLEvent:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];

}

此事件管理器也在 AppDelegate 中调用以下选择器:

- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
NSString *urlString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
NSLog(urlString);
//Parse & Do other stuff...
}

只要应用程序已经在运行,这就能完美地获取调用该应用程序的 URL。问题是,如果应用程序未运行,则应用程序将启动,但启动它的 URL 永远不会传递给handleGetURLEvent。

我确定这与 URL 事件发生后调用 applicationDidFinishLaunching 有关。 URL事件是在NSNotification中还是什么?

我知道这应该很容易,但我不知道该怎么做。

感谢任何能够提供帮助的人。

最佳答案

尝试将 setEventHandler 放入委托(delegate)的 awakeFromNib 中

关于macos - 除非应用程序已在运行,否则 URL 方案监听器无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20623282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com