除非应用程序已经在运行,否则 URL 方案侦听器不起作用
Posted
技术标签:
【中文标题】除非应用程序已经在运行,否则 URL 方案侦听器不起作用【英文标题】:URL Scheme Listener Not Working Unless App is Already Running 【发布时间】:2013-12-16 23:46:01 【问题描述】:当我的 Mac 应用程序在浏览器中单击自定义 URL 方案时,它需要打开并转到特定页面。为此,我在 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 有关。是 NSNotification 中的 URL 事件还是什么?
我知道这应该很容易,但我不知道该怎么做。
感谢任何能够提供帮助的人。
【问题讨论】:
【参考方案1】:尝试将 setEventHandler 放入委托的 awakeFromNib
【讨论】:
以上是关于除非应用程序已经在运行,否则 URL 方案侦听器不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Google Maps API android studio “除非您更新 Google Play 服务,否则应用程序将无法运行”
除非已注释掉print语句,否则收集的任务不会同时运行。为什么?