externally_connectable

A propriedade do manifesto externally_connectable declara quais extensões, apps e páginas da Web podem se conectar ao seu app via runtime.connect e runtime.sendMessage.

Para um tutorial sobre transmissão de mensagens, consulte mensagens entre extensões e apps e como enviar mensagens de páginas da Web.

Como se conectar sem external_connectable

Se externally_connectable não for declarado no manifesto do app, todos os apps e extensões poderão se conectar, mas nenhuma página da Web poderá se conectar. Como consequência, ao atualizar seu manifesto para usar externally_connectable, se "ids": ["*"] não for especificado, outras extensões e apps não poderão se conectar ao seu app. Essa pode ser uma consequência inesperada. Portanto, lembre-se.

Exemplo de 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
  },
  ...
}

Referência

A chave de manifesto external_connectable pode ter as seguintes propriedades:

  • ids (matriz de string): opcional

    Os IDs das extensões ou dos apps que têm permissão para se conectar. Se deixado em branco ou não especificado, nenhuma extensão ou app poderá se conectar.

    O caractere curinga "*" permite que todas as extensões e apps se conectem.

  • matches (matriz de string): opcional

    Os padrões de URL para páginas da Web que têm permissão para se conectar. Isso não afeta scripts de conteúdo. Se deixado em branco ou não especificado, nenhuma página da Web poderá se conectar.

    Os padrões não podem incluir domínios com caractere curinga nem subdomínios de domínios de nível superior(efetivos). *://google.com/* e https://*.chromium.org/* são válidos, enquanto <all_urls>, https://*/*, *://*.com/* e até mesmo https://*.appspot.com/* não são.

  • accepts_tls_channel_id (booleano): opcional

    Se o valor for true, as mensagens enviadas por runtime.connect ou runtime.sendMessage vão definir runtime.MessageSender.tlsChannelId se esses métodos solicitarem isso. Se for false, runtime.MessageSender.tlsChannelId nunca vai ser definido.