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): opcionalOs 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): opcionalOs 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/*
ehttps://*.chromium.org/*
são válidos, enquanto<all_urls>
,https://*/*
,*://*.com/*
e até mesmohttps://*.appspot.com/*
não são.accepts_tls_channel_id
(booleano): opcionalSe o valor for
true
, as mensagens enviadas porruntime.connect
ouruntime.sendMessage
vão definirruntime.MessageSender.tlsChannelId
se esses métodos solicitarem isso. Se forfalse
,runtime.MessageSender.tlsChannelId
nunca vai ser definido.