我正在尝试将自定义协议处理程序连接到OSX上的应用程序,以便我可以执行test://参数
在我的plist中,我有以下内容:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLIconFile</key>
<string></string>
<key>CFBundleURLName</key>
<string>test</string>
<key>CFBundleURLSchemes</key>
<array>
<string>test</string>
</array>
</dict>
</array>
这成功启动了应用程序,但我的参数列表始终为空。为什么是这样?
在封面下启动Java \ Scala应用程序,主要方法是: 对象LoadJS { def main(args:Array [String]){
我可以在命令行上使用“open”命令时传入参数。从Chrome和Firefox都可以尝试,但都可以使用。
有什么想法吗?
由于
本
答案 0 :(得分:2)
URL不作为参数传递。相反,您的应用程序已启动,然后会收到类kInternetEventClass
和ID kAEGetURL
的AppleEvent。也许这篇文章描述了如何使用Objective C中自己的协议,可以帮助理解它的工作原理:
How do you set your Cocoa application as the default web browser?
为了从Java / Scala实际处理此事件,您需要进行更多研究并编写本机代码...查看Apple's ApplicationAdapter类,它允许您处理一些基本的AppleEvent,如open,重新开放,等等;但不幸的是,不是与URL相关的事件。在this forum,有人报告使用JNI进行此操作。