3

应该相对简单,但我似乎找不到任何东西 - 我正在尝试将 URL 处理程序添加到 Cocoa-Applescript 应用程序,如下所述: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)但我现在只是在猜测:)

非常感谢任何帮助..

4

3 回答 3

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>

这允许您的应用从以下形式的 URL 获取输入:

myappscheme://com.myappname/?foo=stuff&bar=otherstuff

整个 URL 被传入并最终出现在您的 'urlString' 变量中,因此您可以随意解析它。这意味着您甚至不必像我上面那样遵循标准的 URL 约定,但您可能会发现这样做很方便,因此您可能会支持在您的应用程序中解析 Facebook 或 Google 地图 URL将 http:// 更改为 myappscheme://

享受/希望有帮助.. :)

于 2013-08-24T17:48:04.373 回答
0

我不使用 ApplescriptObjC,但是在普通的可可应用程序中,请参阅这篇文章,它解释了如何做到这一点。我假设你需要这样做。

于 2013-01-30T16:53:50.033 回答
0

我可能会遇到类似的事情。我有一个 Applescript URL 处理程序,它启动但不处理传递的 URL(正如您所描述的)。

我发现当另一个程序发送链接时,一切正常。
当我尝试通过终端“open”命令手动发送链接时,“on run”处理程序触发而不是“on open location”——不幸的是,这意味着我无法获取传递的 URL。

于 2013-02-07T17:22:09.917 回答