externally_connectable

Właściwość externally_connectable w pliku manifestu określa, które rozszerzenia, aplikacje i strony internetowe mogą się łączyć z aplikacją przez runtime.connect i runtime.sendMessage.

Samouczek dotyczący przekazywania wiadomości znajdziesz w artykułach o wysyłaniu wiadomości między rozszerzeniami i wiadomościami w aplikacjach oraz wysyłaniu wiadomości ze stron internetowych.

Łączenie bez opcji external_connectable

Jeśli w pliku manifestu aplikacji nie zadeklarujesz externally_connectable, mogą się łączyć wszystkie rozszerzenia i aplikacje, ale żadne strony nie będą mogły się z nim połączyć. W związku z tym zaktualizowanie pliku manifestu do używania externally_connectable i nieokreślenie "ids": ["*"] spowoduje, że inne rozszerzenia i aplikacje utracą możliwość połączenia się z Twoją aplikacją. Może to być niezamierzone, dlatego pamiętaj o tym.

Przykładowy plik manifest.json

{
  "name": "My externally connectable app",
  "externally_connectable": {
    // Extension and app IDs. If this field is not specified, no
    // extensions or apps can connect.
    "ids": [
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      ...
      // Alternatively, to match all extensions and apps, specify only
      // "*".
      "*"
    ],
    // Match patterns for web pages. Does not affect content scripts.
    // If this field is not specified, no webpages can connect.
    "matches": [
      "https://*.google.com/*",
      "*://*.chromium.org/*",
      ...
    ],
    // Indicates that the extension would like to make use of the TLS
    // channel ID of the web page connecting to it. The web page must
    // also opt to send the TLS channel ID to the extension via setting
    // includeTlsChannelId to true in runtime.connect's connectInfo
    // or runtime.sendMessage's options.
    "accepts_tls_channel_id": false
  },
  ...
}

Dokumentacja

Klucz pliku manifestu external_connectable może mieć te właściwości:

  • ids (tablica ciągu znaków) – opcjonalnie

    Identyfikatory rozszerzeń lub aplikacji, które mogą się połączyć. Jeśli pozostawisz to pole puste lub nie określisz, żadne rozszerzenia ani aplikacje nie będą się łączyć.

    Symbol wieloznaczny "*" umożliwi połączenie wszystkich rozszerzeń i aplikacji.

  • matches (tablica ciągu znaków) – opcjonalnie

    Wzorce adresów URL stron internetowych, które można łączyć. Nie ma to wpływu na skrypty treści. Jeśli pozostawisz to pole puste lub nie określono inaczej, żadne strony internetowe nie będą mogły się połączyć.

    Wzorce nie mogą zawierać domen z symbolami wieloznacznymi ani subdomen (efektywnych) domen najwyższego poziomu. *://google.com/* i https://*.chromium.org/* są prawidłowe, ale <all_urls>, https://*/*, *://*.com/*, a nawet https://*.appspot.com/* – nie.

  • accepts_tls_channel_id (wartość logiczna) – opcjonalna

    Jeśli ustawiona jest wartość true, wiadomości wysyłane przez runtime.connect lub runtime.sendMessage będą miały ustawioną wartość runtime.MessageSender.tlsChannelId, o ile te metody tego zażądają. Jeśli false, runtime.MessageSender.tlsChannelId nie zostanie w żadnym przypadku ustawiona.