0

Chrome 拡張機能と Java アプリケーションにネイティブ メッセージングを組み込もうとしています。

私の Chrome 拡張機能の JavaScript には、次のコードがあります。(manifest.json に nativeMessaging 権限があります)

function connectToNativeApp()
{
  console.log('connecting to native app...');
  port = chrome.runtime.connectNative('com.app.native');
  port.onMessage.addListener(onNativeMessage);
  port.onDisconnect.addListener(onDisconnected);
  console.log('connected to native app...');
}

ネイティブ アプリにメッセージを送信すると、Java アプリはメッセージを拡張機能に送り返すはずですが、そうではありません。実際に拡張機能に接続しているかどうかをテストするために、connectNative メソッドでホスト名を間違って入力しましたが、エラーは発生しませんでした!?

私はWindowsを使用しているため、レジストリキーを追加する必要があると聞きましたが、方法がわからず、regeditのchromeフォルダーの下にNativeMessagingHostsフォルダーがありません。

私のネイティブ アプリ フォルダーも、chrome 拡張機能と同じフォルダーにあります。多くのチュートリアルを探してみましたが、私の問題に役立つものは見つかりませんでした。なぜWindowsはすべてを複雑にするのですか? :)

助けてください。お時間をいただきありがとうございます。サブビー

4

2 に答える 2

1

以下をレジストリにインポートします

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts]

[HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.app.native]
@="<YOURPATHHERE>\\com.app.native.messaging.json"

パスの例は "C:\\MyExtensions\\com.app.native.messaging.json" のようになります。フォルダ。JSON ファイルに、次を追加します。

{
  "name": "com.app.native.messaging",
  "description": "Your desctiption",
  "path": "<YOUR NATIVE APP NAME>.exe",
  "type": "stdio",
  "allowed_origins": [
  "chrome-extension: <YOUR EXTENSION HASH>"
  ]
}

ネイティブ アプリケーションが JSON と同じフォルダーにあることを確認している限り、問題はありません。私の場合、C++ ネイティブ アプリを使用しているため、exe 拡張子を使用しています。Chrome のサンプルを見ると、ネイティブ アプリに Python スクリプトが使用されています。

着信メッセージを STDIN でリッスンし、STDOUT を使用してメッセージを chrome に送り返すことを忘れないでください。どちらの場合も、メッセージは JSON 形式です。

于 2014-10-03T11:13:41.160 に答える
0

他の答えには問題があります。そのせいで何時間も費やした。

com.app.native.messaging.jsonファイルの最後の行は次のようになっている必要があります。

"chrome-extension://<YOUR EXTENSION HASH>/"

スラッシュを入れていなかったため、拡張機能でエラーは発生しませんでしたが、アプリケーションは起動しませんでした。それが役に立てば幸い。

于 2015-07-08T18:48:52.730 に答える