【发布时间】:2014-08-09 22:07:15
【问题描述】:
我已经为我的应用程序注册了一个 URI 方案“测试方案”。
我还在- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 通过 NSAppleEventManager
以下代码注册 geturl 处理程序
NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
[appleEventManager setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
当我第一次从浏览器打开“testscheme://some parameters”时(当我的应用程序没有运行时),操作系统会打开我的应用程序。
如果我检查命令行参数,我看不到“testscheme://some parameters”作为命令行参数。
但是,如果我在我的应用程序已经运行时打开相同的 URL,我会在使用 NSAppleEventManager 注册的 GetURL 处理程序中获得 URL。
我想在我的应用程序第一次启动时通过命令行或 GetURL 处理程序获取测试方案 url 参数。
我还检查了 Mail.app,当我在浏览器中打开 mailto:frank@wwdcdemo.example.com 时,参数正确传递给了 Mail.app。
但是,如果我同时使用 ps -ef 为 Mail.app 检查命令行参数,我看不到除应用程序路径之外的任何参数。
请帮帮我。
感谢和问候。
【问题讨论】:
-
命令行参数有什么关系?你不是通过
handleEvent处理所有的 URL 请求吗? -
我不明白你的问题。
-
很抱歉给您带来了困惑。我通过在 awakeFromNib 中注册处理程序而不是 applicationDidFinishedLaunching 来让它工作。
标签: objective-c macos uri-scheme