我正在尝试使用自定义 URL 协议来启动我的 Qt (4.7.3) 应用程序。我已经让它适用于 Windows,所以现在是 Mac 的时候了。
我已经对 Info.plist 进行了必要的更改,并在浏览器中输入“customrprotocol://etc”时启动应用程序。问题是我需要某种方式将整个 URL 传递到我的应用程序中,以便我可以处理参数(仅在应用程序的开头)。在这个阶段,没有像在 Windows 中那样找到额外的参数 (argv[1]),尽管使用我的自定义 URL 协议输入了长 URL。
目前,我已经研究了两种可能的方法来做到这一点:
1)制作一个苹果脚本,我将它变成一个应用程序包,我修改其.plist以响应customprotocol://,并让它简单地使用'do shell script'启动我的真实应用程序并将URL作为参数传递。http://www.macosxautomation.com/applescript/linktrigger/index.html解释了这个过程。
不确定我是否喜欢这个选项,因为那时你基本上有 2 个应用程序包,我不想在某人的 Mac 上放置两个不同的应用程序才能让它工作。我正在尝试将一个捆绑包放在另一个捆绑包中,看看它是否有效。
2)通过将objective-c合并到我的项目中来处理实际的“geturl”AppleEvent,我尝试按照以下示例进行操作:URL scheme - Qt and mac。
我对这个选项的问题是我不太确定如何去做。我已经将所有的objective-c 代码放入了一个.mm 文件中,我使用OBJECTIVE_SOURCES += objectivecstuff.mm 将它带入了项目中,并且我确保将Cocoa 框架也作为一个库包含在内。
一切都编译得很好,但它根本没有做我想做的事情(我还尝试将 URL 放入链接示例的 'handleGetURLEvent' 方法中的全局变量中,以便我可以在不同的模块中处理它)。
我认为问题的症结在于我不理解那个 .mm 文件中的objective-c,并且不确定我是否需要在某个地方实例化这个 EventHandler 对象或其他什么。我已经尝试通过http://el-tramo.be/blog/mixing-cocoa-and-qt阅读,但是这个人将 Cocoa 集成到 Qt 中的示例看起来更加面向 C++,然后似乎是在URL 方案 - Qt 和 mac,所以我不确定如何继续使用此选项。
在这一点上真的很感激一些建议和建议!
感谢您的阅读。