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) – opcjonalnieIdentyfikatory 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) – opcjonalnieWzorce 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/*
ihttps://*.chromium.org/*
są prawidłowe, ale<all_urls>
,https://*/*
,*://*.com/*
, a nawethttps://*.appspot.com/*
– nie.accepts_tls_channel_id
(wartość logiczna) – opcjonalnaJeśli ustawiona jest wartość
true
, wiadomości wysyłane przezruntime.connect
lubruntime.sendMessage
będą miały ustawioną wartośćruntime.MessageSender.tlsChannelId
, o ile te metody tego zażądają. Jeślifalse
,runtime.MessageSender.tlsChannelId
nie zostanie w żadnym przypadku ustawiona.