externally_connectable

מאפיין המניפסט externally_connectable מצהיר אילו תוספים, אפליקציות ודפי אינטרנט יכולים להתחבר לאפליקציה דרך runtime.connect ו-runtime.sendMessage.

לקבלת הדרכה על העברת הודעות, קראו את המאמר העברת הודעות בין תוספים ואפליקציות ושליחת הודעות מדפי אינטרנט.

מתחבר ללא חיבור חיצוני

אם לא מוצהר על externally_connectable במניפסט של האפליקציה, כל התוספים והאפליקציות יוכלו להתחבר אבל לא דפי אינטרנט יוכלו להתחבר. כתוצאה מכך, כשמעדכנים את המניפסט לשימוש ב-externally_connectable, אם לא מציינים את "ids": ["*"], תוספים ואפליקציות אחרים יאבדו את היכולת להתחבר לאפליקציה. ייתכן שמדובר כתוצאה לא מכוונת, לכן חשוב לזכור זאת.

דוגמה ל-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
  },
  ...
}

חומר עזר

למפתח המניפסט external_connectable יכולים להיות המאפיינים הבאים:

  • ids (מערך מחרוזת) – אופציונלי

    המזהים של תוספים או אפליקציות שמורשים להתחבר. אם משאירים את השדה ריק או לא מוגדר, אי אפשר לחבר תוספים או אפליקציות.

    התו הכללי לחיפוש "*" יאפשר לכל התוספים והאפליקציות להתחבר.

  • matches (מערך מחרוזת) – אופציונלי

    תבניות ה-URL של דפי אינטרנט שמורשים להתחבר. הפעולה הזו לא משפיעה על סקריפטים של תוכן. אם השדה יישאר ריק או לא צוין, אי אפשר יהיה לחבר דפי אינטרנט.

    התבניות לא יכולות לכלול דומיינים עם תו כללי לחיפוש או תת-דומיינים של דומיינים(פעילים) ברמה העליונה; *://google.com/* ו-https://*.chromium.org/* הם חוקיים, ואילו <all_urls>, https://*/*, *://*.com/* ואפילו https://*.appspot.com/* אינם חוקיים.

  • accepts_tls_channel_id (בוליאני) - אופציונלי

    אם הערך הוא true, בהודעות שנשלחות דרך runtime.connect או runtime.sendMessage תוגדר runtime.MessageSender.tlsChannelId אם השיטות האלה יבקשו זאת. אם הערך false, runtime.MessageSender.tlsChannelId אף פעם לא יוגדר בשום מקרה.