externally_connectable

La propiedad del manifiesto externally_connectable declara qué extensiones, apps y páginas web pueden conectarse a tu app mediante runtime.connect y runtime.sendMessage.

Si quieres ver un instructivo sobre el paso de mensajes, consulta Mensajes entre extensiones y apps y Envía mensajes desde páginas web.

Conexión sin external_connectable

Si no se declara externally_connectable en el manifiesto de la app, se podrán conectar todas las extensiones y apps, pero ninguna página web podrá conectarse. Como consecuencia, cuando actualices tu manifiesto para usar externally_connectable, si no se especifica "ids": ["*"], las demás extensiones y apps ya no podrán conectarse a tu app. Esta puede ser una consecuencia no deseada, por lo que debes tenerla en cuenta.

Ejemplo 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
  },
  ...
}

Reference

La clave del manifiesto conectable externamente puede tener las siguientes propiedades:

  • ids (arreglo de string) (opcional)

    Los IDs de las extensiones o aplicaciones que tienen permitido conectarse. Si se deja vacío o no se especifica, no se podrá conectar ninguna extensión ni app.

    El comodín "*" permitirá que todas las extensiones y aplicaciones se conecten.

  • matches (arreglo de string) (opcional)

    Indica los patrones de URL de las páginas web que pueden conectarse. Esto no afecta a las secuencias de comandos del contenido. Si se deja vacío o no se especifica, no se podrá conectar ninguna página web.

    Los patrones no pueden incluir dominios de comodín ni subdominios de dominios de nivel superior(efectivos). *://google.com/* y https://*.chromium.org/* son válidos, mientras que <all_urls>, https://*/*, *://*.com/* y https://*.appspot.com/* no lo son.

  • accepts_tls_channel_id (booleano): opcional

    Si es true, los mensajes enviados a través de runtime.connect o runtime.sendMessage configurarán runtime.MessageSender.tlsChannelId si esos métodos así lo solicitan. Si es false, runtime.MessageSender.tlsChannelId nunca se establecerá en ninguna circunstancia.