חיבור תוסף מאפליקציית PWA לקיוסק

אפליקציות Chrome יוצאו משימוש אחרי Chrome 102 ל-Windows, ל-Linux ול-MacOS. ב-ChromeOS, אפליקציות Chrome יתמכו לפחות עד ינואר 2025, אבל אנחנו ממליצים מאוד לעבור לאפליקציות אינטרנט כי אנחנו מתכננים להפסיק את התמיכה באפליקציות Chrome. בעבר, לאפליקציות Chrome הייתה פונקציונליות נוספת שהייתה זמינה להן במצב קיוסק, שלא נתמכת כרגע רק על ידי אפליקציות אינטרנט. אפשר להמשיך להשתמש בחלק מהפונקציונליות הזו באמצעות פריסת תוסף נלווה עם אפליקציית האינטרנט של הקיוסק.

איך פורסים תוספים?

הפריסה של התוספים מתבצעת דרך מסך ההגדרות של קיוסק במסוף Google Admin (אפשר להגיע אליו דרך Devices > Chrome > Apps & Extensions > Kiosks). התוספים יכולים להיות מאוחסנים בקישור שזמין לציבור או באירוח של התוסף בחנות האינטרנט של Chrome. מידע נוסף על ניהול תוספים בסביבה ארגונית או חינוכית מופיע במאמר הזה.

איך אפשר לקרוא ל-APIs של תוספים מאפליקציית האינטרנט שלי?

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

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

הפעלת ממשקי API של תוספים במצב קיוסק בלבד

יש כמה ממשקי API של תוספים שזמינים רק במצב קיוסק. כדי שהתוסף יוכל לקרוא לממשקי ה-API האלה שזמינים רק במצב קיוסק, צריך להוסיף את השדה "kiosk_enabled" למניפסט ולהגדיר אותו לערך true:

{
    "manifest_version": 3,
    "version": "1.0",
    ...
    "kiosk_enabled": true
 }

הטמעה של העברת הודעות

הגדרת התוסף

כדי לקבל הודעות מאפליקציית האינטרנט שלכם ולהגיב להן, תצטרכו לחשוף סקריפט ברקע שמחכה להודעות שיגיעו מהלקוח (אפליקציית האינטרנט שלכם) ואז להעביר את הבקשות האלה לשיחת API תואמת. בדוגמה הבאה, בקשה מועברת דרך פרוקסי להפעלה מחדש של מכשיר ChromeOS כשאפליקציית האינטרנט שולחת אובייקט הודעה מותאם אישית שמכיל methodName עם הערך callRestart.

// message handler - extension code
chrome.runtime.onMessageExternal.addListener(function (request, sender, sendResponse) {
  if (request.methodName == 'callRestart') {
    chrome.runtime.restart();
  }
});

אפשר להגדיר את קובץ המניפסט של התוסף כך שיאפשר קריאות לפונקציות חיצוניות לתוסף באמצעות המפתח externally_connectable, שמציין לאילו אתרים ותוספים מותר לקרוא לשיטות בתוסף. מידע נוסף על תוספים ל-Chrome ועל Manifest v3 זמין במסמכי התיעוד הרשמיים.

{
    "background": {
       "service_worker": "background.js"
    },
    "description": "This restarts your ChromeOS device. Lucky you!",
    "manifest_version": 3,
    "name": "Restart your kiosk app",
    "version": "1.0",
    "kiosk_enabled": true,
    "externally_connectable": {
         "accepts_tls_channel_id": false,
         "matches": [ "://developer.android.com/" ]
      }
 }

הגדרת אפליקציית אינטרנט

כדי להפעיל את התוסף מאפליקציית אינטרנט, צריך לדעת את מזהה התוסף הסטטי. אפשר למצוא את המזהה הזה בדף chrome://extensions שמוצג כשמתקינים את התוסף ל-Chrome, או בחנות האינטרנט של Chrome אחרי שהתוסף הועלה. כך אפליקציית האינטרנט יכולה לציין את התוסף המדויק שאיתו היא רוצה לתקשר. אחרי זה, מתקשרים אל chrome.runtime.sendMessage ומעבירים את מזהה התוסף עם הודעה שרוצים לשלוח לתוסף.

const STATIC_EXTENSION_ID = 'abcdefghijklmnopqrstuvwxyz'; // found from chrome extensions page of chrome web store.
const callExtensionAPI = function (method) {
  chrome.runtime.sendMessage(STATIC_EXTENSION_ID, {
    methodName: method,
  });
};
callExtensionAPI('callRestart');

מידע נוסף על קישור דפי אינטרנט לתוספים להעברת הודעות זמין במאמר הזה.

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