זיהוי משתמשים לא פעילים באמצעות Idle Detection API

אפשר להשתמש ב-API לזיהוי של מצב פעיל כדי לברר מתי המשתמש לא משתמש באופן פעיל במכשיר שלו.

מהו ה-API לזיהוי לא פעיל?

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

תרחישים לדוגמה לשימוש ב-Idle Detection API

דוגמאות לאתרים שבהם אפשר להשתמש ב-API הזה:

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

הסטטוס הנוכחי

שלב סטטוס
1. יצירת הסבר הושלם
2. יצירת טיוטה ראשונית של מפרט הושלם
3. איסוף משוב לבצע איטרציה בעיצוב בתהליך
4. גרסת מקור לניסיון הושלם
5. הפעלה Chromium 94

איך משתמשים ב-API לזיהוי של מצב לא פעיל

זיהוי תכונות

כדי לבדוק אם יש תמיכה ב-API של זיהוי ביטול נעילה, אפשר להשתמש במקורות הבאים:

if ('IdleDetector' in window) {
  // Idle Detector API supported
}

מושגי Idle Detection API

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

  • מצב חוסר הפעילות של המשתמש: active או idle: למשתמש יש או לא הייתה אינטראקציה עם סוכן המשתמש במשך פרק זמן מסוים.
  • מצב חוסר פעילות של המסך: locked או unlocked: במערכת יש נעילת מסך פעילה (כמו שומר מסך) שמונעת אינטראקציה עם סוכן המשתמש.

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

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

שימוש ב-API לזיהוי של חוסר פעילות

השלב הראשון בשימוש ב-Idle Detection API הוא כדי להבטיח שההרשאה 'idle-detection' הוענקה. אם לא ניתנה ההרשאה, תצטרכו שליחת בקשה דרך IdleDetector.requestPermission(). הערה: כדי להפעיל את השיטה הזו, נדרשת תנועת משתמש.

// Make sure 'idle-detection' permission is granted.
const state = await IdleDetector.requestPermission();
if (state !== 'granted') {
  // Need to request permission first.
  return console.log('Idle detection permission not granted.');
}

השלב השני הוא ליצור מופע של IdleDetector. המינימום threshold הוא 60,000 אלפיות השנייה (דקה אחת). אפשר סוף סוף להתחיל את זיהוי חוסר הפעילות על ידי קריאה שיטת start() של IdleDetector. היא לוקחת אובייקט עם הערך הרצוי של threshold ללא פעילות באלפיות השנייה ו-signal אופציונלי עם AbortSignal כדי לבטל את הזיהוי של חוסר פעילות כפרמטרים.

try {
  const controller = new AbortController();
  const signal = controller.signal;

  const idleDetector = new IdleDetector();
  idleDetector.addEventListener('change', () => {
    const userState = idleDetector.userState;
    const screenState = idleDetector.screenState;
    console.log(`Idle change: ${userState}, ${screenState}.`);
  });

  await idleDetector.start({
    threshold: 60000,
    signal,
  });
  console.log('IdleDetector is active.');
} catch (err) {
  // Deal with initialization errors like permission denied,
  // running outside of top-level frame, etc.
  console.error(err.name, err.message);
}

אפשר לבטל את הזיהוי של חוסר פעילות באמצעות קריאה של AbortController abort() .

controller.abort();
console.log('IdleDetector is stopped.');

תמיכה בכלי פיתוח

החל מ-Chromium 94, אפשר ליצור אמולציה של אירועים עקב אי-פעילות בכלי הפיתוח בלי לבצע פעולות ללא פעילות בפועל. בכלי הפיתוח, פותחים את הכרטיסייה חיישנים ומחפשים את האפשרות Emulate Id Detector (מצב זיהוי לא פעיל). אתם יכולים לראות את מגוון האפשרויות בסרטון שלמטה.

אמולציה של מצב 'זיהוי של חוסר פעילות' בכלי הפיתוח.

תמיכה בבובות

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

הדגמה (דמו)

אפשר לראות את ה-API של זיהוי ללא פעילות (Idle Detection) בפעולה באמצעות הדגמה של לוח הציור הזמני שמוחק את ה-API תכנים אחרי 60 שניות של חוסר פעילות. אפשר לדמיין את זה כשהם פרוסים במחלקה בחנות לילדים לצייר עליה.

הדגמה של הדפסה זמנית על קנבס

מילוי פוליגונים

היבטים מסוימים של ה-API לזיהוי של חוסר פעילות (Idle Detection API) ניתנים למילוי חוסרים (polyfill) קיימות ספריות זיהוי לא פעיל כמו idle.ts, אבל הגישות האלה מוגבלות לתחום התוכן של אפליקציית האינטרנט: הספרייה שפועלת בהקשר של אפליקציית האינטרנט צריך לבצע דגימה יקרה אחר אירועי קלט או להאזין לשינויים בחשיפה. עם זאת, באופן מוגבל יותר, ספריות לא יכולות לזהות היום כשמשתמש לא פעיל מחוץ לאזור התוכן שלו (למשל, כשמשתמש נמצא בכרטיסייה אחרת או התנתקו לגמרי מהמחשב שלהם).

אבטחה והרשאות

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

שליטה ופרטיות של משתמשים

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

משוב

בצוות Chrome רוצים לשמוע על החוויות שלכם עם ה-API לזיהוי לא פעיל.

מתארים את עיצוב ה-API

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

דיווח על בעיה בהטמעה

מצאת באג בהטמעה של Chrome? או שההטמעה שונה מהמפרט? דווחו על באג בכתובת new.crbug.com. כדאי לכלול כמה שיותר פרטים, הוראות פשוטות לשחזור, ומזינים Blink>Input בתיבה רכיבים. Glitch היא אפשרות טובה לשיתוף תגובות מהירות וקלות.

הצגת תמיכה ב-API

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

קישורים שימושיים

אישורים

Sam Goto הטמיע את ממשק Idle Detection API. התמיכה בכלי הפיתוח נוספה על ידי Maksim Sadym. תודה לג'ו מדלי, קייס בסקית וגם Reilly Grant שהביקורות שלהן על המאמר הזה התמונה הראשית היא של פרננדו הרננדז ביטול הפתיחה.