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

そして、すべての CFBundleURLTypes/CFBundleURLschemes を info.plist に追加しました。

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

私は似たようなことに出くわしているかもしれません。起動するが、渡された URL を処理しない Applescript URL ハンドラーがあります (説明したとおり)。

私が見つけたのは、別のプログラムがリンクを送信すると、すべてが正常に機能するということでした。
端末の「open」コマンドを使用して手動でリンクを送信しようとすると、「on open location」ではなく「on run」ハンドラーがトリガーされます。これは残念ながら、渡された URL を取得できないことを意味します。

于 2013-02-07T17:22:09.917 に答える
0

私は ApplescriptObjC を使用しませんが、通常のココア アプリケーションでは、その方法を説明しているこの投稿を参照してください。そのようにする必要があると思います。

于 2013-01-30T16:53:50.033 に答える