אפשר להשתמש ב-Idle Detection API כדי לגלות מתי המשתמש לא משתמש במכשיר שלו באופן פעיל.
מה ה-Idle Detection Detection API?
ה-Idle Detection API מודיע למפתחים כשהמשתמשים לא פעילים, שמציין דברים כמו חוסר אינטראקציה עם המקלדת, העכבר והמסך, הפעלה של שומר מסך, נעילת המסך או מעבר למסך אחר. סף שהוגדר על ידי המפתח מפעיל את ההתראה.
תרחישים לדוגמה מומלצים ל-Idle Detection Detection API
דוגמאות לאתרים שעשויים להשתמש בממשק API זה:
- אפליקציות צ'אט או אתרי רשתות חברתיות באינטרנט יכולים להשתמש ב-API הזה כדי ליידע את המשתמש אם ניתן להשיג כרגע את אנשי הקשר שלו.
- אפליקציות "קיוסק" שגלויות לכולם, למשל במוזיאונים, יכולות להשתמש ב-API הזה כדי לחזור לתצוגה 'בית' אם אף אחד לא משתמש יותר בקיוסק.
- אפליקציות שמחייבות חישובים יקרים, כמו שרטוט תרשימים, יכולות להגביל את החישובים האלה לרגעים שבהם המשתמש מבצע אינטראקציה עם המכשיר.
הסטטוס הנוכחי
שלב | סטטוס |
---|---|
1. יצירת הסבר | הושלם |
2. יצירת טיוטה ראשונית של מפרט | הושלם |
3. אוספים משוב וחוזרים על העיצוב | בתהליך |
4. גרסת מקור לניסיון | הושלם |
5. הפעלה | Chromium 94 |
איך משתמשים ב-Idle Detection Detection API
זיהוי תכונות
כדי לבדוק אם יש תמיכה ב-Idle Detection API, משתמשים ב:
if ('IdleDetector' in window) {
// Idle Detector API supported
}
מושגים ב-Idle Detection Detection API
ה-Idle Detection API מניח שיש רמה מסוימת של מעורבות בין המשתמש, סוכן המשתמש (כלומר, הדפדפן) לבין מערכת ההפעלה של המכשיר שבו נעשה שימוש. הדבר מיוצג בשני מאפיינים:
- המצב של משתמש לא פעיל:
active
אוidle
: למשתמש הייתה או לא הייתה אינטראקציה איתו במשך תקופה מסוימת. - המצב של חוסר פעילות במסך:
locked
אוunlocked
: למערכת יש נעילת מסך פעילה (כמו שומר מסך) שמונעת אינטראקציה עם סוכן המשתמש.
כדי להבחין בין active
לבין idle
צריך היוריסטיקה שעשויים להשתנות בהתאם למשתמש, לסוכן המשתמש ולמערכת ההפעלה. גם הסף צריך להיות משוער באופן סביר (מידע נוסף מפורט במאמר אבטחה והרשאות).
המודל לא יוצר הבחנה רשמית בין אינטראקציה עם תוכן מסוים באופן מכוון (כלומר, דף האינטרנט בכרטיסייה שמשתמש ב-API), סוכן המשתמש בכללותו או מערכת ההפעלה. ההגדרה הזו נשארת לסוכן המשתמש.
שימוש ב-Idle Detection API
השלב הראשון כשמשתמשים ב-Idle Detection 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 אלפיות השנייה (דקה אחת).
סוף סוף אפשר להתחיל את זיהוי חוסר הפעילות על ידי קריאה ל-method 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);
}
אפשר לבטל את זיהוי חוסר הפעילות על ידי קריאה לשיטה abort()
של
AbortController
.
controller.abort();
console.log('IdleDetector is stopped.');
תמיכה בכלי הפיתוח
החל מ-Chromium 94, אפשר ליצור אמולציה של אירועים ללא פעילות בכלי הפיתוח בלי שיהיה פעיל בפועל. בכלי הפיתוח, פותחים את הכרטיסייה חיישנים ומחפשים את האפשרות אמולציה של מצב גלאי לא פעיל. בסרטון שבהמשך אפשר לראות את האפשרויות השונות.
תמיכה ב-Puppeteer
החל מגרסה 5.3.1 של Puppeteer, אפשר לדמות את מצבי חוסר הפעילות השונים כדי לבדוק באופן פרוגרמטי איך ההתנהגות של אפליקציית האינטרנט משתנה.
הדגמה (דמו)
אפשר לראות את Idle Detection API בפעולה באמצעות ההדגמה של לוח הציור הזמני שמוחקת את התוכן שלו אחרי 60 שניות של חוסר פעילות. אפשר לדמיין את זה נפרסים בחנות כלבו כדי שילדים יוכלו לצייר עליהם.
מילוי פולימר
יש היבטים מסוימים ב-Idle Detection Detection API שניתן למלא או לא פעילים, כמו idle.ts, אבל הגישות האלה מוגבלות לאזור התוכן של אפליקציית האינטרנט: הספרייה שפועלת בהקשר של אפליקציית האינטרנט צריכה לבצע סקרים יקרים כדי לזהות אירועי קלט או להאזין לשינויים בחשיפה. אבל באופן מגביל יותר, ספריות לא יכולות לדעת כיום מתי משתמש עובר למצב לא פעיל מחוץ לאזור התוכן שלו (למשל, כשמשתמש נמצא בכרטיסייה אחרת או כשהוא מנותק מהמחשב).
אבטחה והרשאות
צוות Chrome תכנן והטמיע את ה-Idle Detection API באמצעות עקרונות הליבה שהוגדרו במאמר שליטה בגישה לתכונות מתקדמות של פלטפורמת אינטרנט, כולל בקרת משתמשים, שקיפות וארגונומיה.
היכולת להשתמש ב-API הזה נשלטת באמצעות ההרשאה 'idle-detection'
.
כדי להשתמש ב-API, האפליקציה חייבת לפעול גם בהקשר מאובטח ברמה העליונה.
אמצעי בקרה על פרטיות משתמשים
אנחנו תמיד רוצים למנוע מגורמים זדוניים לעשות שימוש לרעה בממשקי API חדשים. אתרים שנראים בלתי תלויים, אבל למעשה נשלטים על ידי אותה ישות, עשויים לקבל מידע על חוסר פעילות של משתמשים ולהתאים בין הנתונים כדי לזהות משתמשים ייחודיים ממקורות שונים. כדי לצמצם התקפות כאלה, ה-Idle Detection API מגביל את רמת הפירוט של אירועי חוסר הפעילות שדווחו.
משוב
צוות Chrome רוצה לשמוע על חוויית השימוש שלך ב-Idle Detection API.
לספר לנו על עיצוב ה-API
האם יש משהו ב-API שלא פועל כמצופה? או האם חסרים שיטות או מאפיינים שאתם צריכים ליישם את הרעיון? יש לכם שאלה או הערה לגבי מודל האבטחה? שלחו בעיה במפרט במאגר GitHub המתאים, או הוסיפו את דעתכם לבעיה קיימת.
דיווח על בעיה בהטמעה
האם מצאת באג בהטמעה של Chrome? או שההטמעה שונה מהמפרט?
דווחו על באג בכתובת new.crbug.com. הקפידו לכלול כמה שיותר פרטים, הוראות פשוטות לשחזור, והזינו Blink>Input
בתיבה רכיבים.
גליץ' הוא כלי מעולה לשיתוף גיבויים מהירים וקלים.
הבעת תמיכה ב-API
האם בכוונתך להשתמש ב-Idle Detection Detection API? התמיכה הציבורית שלכם עוזרת לצוות של Chrome לתעדף תכונות, ומראה לספקי דפדפנים אחרים עד כמה חשוב לתמוך בהן.
- נשמח לדעת איך בכוונתך להשתמש בה בשרשור של WiCG ב-Wi-Fi.
- שלח ציוץ אל @ChromiumDev באמצעות ה-hashtag
#IdleDetection
וספר לנו איפה אתם משתמשים בו ואיך אתם משתמשים בו.
קישורים שימושיים
- הודעת הסבר ציבורית
- מפרט הטיוטה
- הדגמת API של זיהוי לא פעיל | מקור הדגמה של API לזיהוי לא פעיל
- באג במעקב
- רשומת ChromeStatus.com
- רכיב הבהוב:
Blink>Input
אישורים
ממשק API לזיהוי ללא פעילות הוטמע על ידי Sam Goto. נוספה תמיכה בכלי הפיתוח על ידי Maksim Sadym. תודה ל-Joe Medley, Kayce Basques ו-Reilly Grant על הביקורות על המאמר הזה. התמונה הראשית היא של פרננדו הרננדז בתוכנית UnFlood.