应该相对简单,但我似乎无法找到任何内容 - 我正在尝试向Cocoa-Applescript应用程序添加URL处理程序,如下所述: http://www.macosxautomation.com/applescript/linktrigger/index.html
除了该示例似乎在Xcode / Cocoa-Applescript应用程序中不起作用。
在我的AppDelegate.applescript中,在applicationDidFinishLaunching_之后我得到了:
on open location this_URL
tell me to log "this_URL: " & this_URL
end open location
我在info.plist中添加了所有CFBundleURLTypes / CFBundleURLschemes内容。
后者似乎正常工作,因为当我点击myAppScheme://链接时我的应用激活了。
但日志声明不会触发。
我也试过像on handleGetURLEvent_(this_URL)
这样的东西,但我只是在猜这一点:)
任何帮助都非常感谢..
答案 0 :(得分:3)
解决! (下面的“幻数”是由ASObjc中的错误引起的。)
on applicationDidFinishLaunching_(aNotification)
-- Insert code here to initialize your application before any files are opened
-- Register the URL Handler stuff
tell current application's NSAppleEventManager's sharedAppleEventManager() to setEventHandler_andSelector_forEventClass_andEventID_(me, "handleGetURLEvent:", current application's kInternetEventClass, current application's kAEGetURL)
-- all your other application startup stuff..
end applicationDidFinishLaunching_
-- handler that runs when the URL is clicked
on handleGetURLEvent_(ev)
set urlString to (ev's paramDescriptorForKeyword_(7.57935405E+8)) as string
tell me to log "urlString: " & urlString
-- do stuff with 'Set AppleScript's text item delimiters to "foo="', and then "&" etc, to parse your parameters out of the URL String
end handleGetURLEvent_
你的info.plist需要采用以下形式:
<key>CFBundleIdentifier</key>
<string>com.myappname</string>
...
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>My App Name Helper</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myappscheme</string>
</array>
</dict>
</array>
这允许您的应用从以下格式的网址中获取输入:
myappscheme://com.myappname/?foo = stuff&amp; bar = otherstuff
整个网址都会传入,并以“urlString”变量结束,因此您可以根据需要对其进行解析。这意味着你甚至不必像我上面那样遵循标准的网址约定,但是你可能会觉得这样做很方便,所以你可以支持解析让我们说你的应用程序中的Facebook或谷歌地图网址很简单将http://更改为myappscheme://
享受/希望有帮助......:)
答案 1 :(得分:0)
我不使用ApplescriptObjC,但在正常的cocoa应用程序中,请参阅this post,其中说明了如何执行此操作。我想你需要这样做。
答案 2 :(得分:0)
我可能遇到类似的事情。我有一个Applescript URL处理程序启动但不处理传递的URL(正如您所描述的那样)。
我发现当另一个程序发送链接时,一切都正常运行 当我尝试通过终端“open”命令手动发送链接时,“on run”处理程序触发而不是“on open location” - 这很遗憾意味着我无法获取传递的URL。