ה-API של חסימת מצב שינה של המסך מאפשר למנוע ממכשירים לעמעם או לנעול את המסך כשיש צורך שאפליקציה תמשיך לפעול.
מה זה Screen Wake Lock API?
כדי למנוע את ריקון הסוללה, רוב המכשירים עוברים למצב שינה במהירות כשלא משתמשים בהם. ברוב המקרים זה לא משנה, אבל יש אפליקציות שצריכות שהמסך יישאר פעיל כדי להשלים את העבודה שלהן. לדוגמה, אפליקציות בישול שמציגות את השלבים במתכון או משחק כמו Ball Puzzle, שמשתמש בממשקי ה-API של תנועת המכשיר לקלט.
Screen Wake Lock API מספק דרך למנוע את העמעום והנעילה של המסך במכשיר. היכולת הזו מאפשרת חוויות חדשות, שעד עכשיו נדרשה בשבילן אפליקציה ספציפית לפלטפורמה.
ה-API של Screen Wake Lock מצמצם את הצורך בפתרונות עקיפים מסובכים שעלולים לצרוך הרבה חשמל. הוא פותר את הבעיות ב-API ישן יותר, שהיה מוגבל להשארת המסך דולק בלבד, והיו בו מספר בעיות אבטחה ופרטיות.
תרחישי שימוש מומלצים ב-Screen Wake Lock API
RioRun, אפליקציית אינטרנט שפותחה על ידי The Guardian, הייתה מקרה שימוש מושלם (אבל היא כבר לא זמינה). האפליקציה מציעה סיור אודיו וירטואלי בריו, לאורך המסלול של המרתון האולימפי של 2016. בלי נעילות השכמה, המסכים של המשתמשים היו נכבים לעיתים קרובות בזמן שהסיור מוצג, מה שהיה מקשה על השימוש בו.
כמובן שיש עוד הרבה תרחישי שימוש:
- אפליקציית מתכונים שמשאירה את המסך דלוק בזמן שאתם אופים עוגה או מבשלים ארוחת ערב
- אפליקציה של כרטיס עלייה למטוס או כרטיס שמשאירה את המסך פתוח עד לסריקת הברקוד
- אפליקציה בסגנון קיוסק ששומרת על המסך דולק באופן רציף
- אפליקציה להצגת מצגות באינטרנט ששומרת על המסך פתוח במהלך הצגת המצגת
הסטטוס הנוכחי
שלב | סטטוס |
---|---|
1. יצירת הסבר | לא רלוונטי |
2. יצירת טיוטה ראשונה של המפרט | השלמה |
3. איסוף משוב ושיפור העיצוב | השלמה |
4. גרסת מקור לניסיון | הושלם |
5. הפעלה | השלמה |
שימוש ב-Screen Wake Lock API
סוגים של חסימות מצב שינה
נכון לעכשיו, Screen Wake Lock API מספק רק סוג אחד של נעילת מסך: screen
.
screen
חסימת מצב שינה
screen
חסימת מצב שינה מונעת את כיבוי המסך של המכשיר, כדי שהמשתמש יוכל לראות את המידע שמוצג במסך.
קבלת חסימת מצב שינה במסך
כדי לבקש נעילת מסך למניעת שינה, צריך להפעיל את method navigator.wakeLock.request()
שמחזירה אובייקט WakeLockSentinel
.
מעבירים לשיטה הזו את סוג הנעילה הרצוי של ההשכמה כפרמטר, שבשלב הזה מוגבל רק ל-'screen'
ולכן הוא אופציונלי.
הדפדפן יכול לדחות את הבקשה מסיבות שונות (לדוגמה, אם רמת הטעינה של הסוללה נמוכה מדי), ולכן מומלץ להוסיף את הקריאה ל-try…catch
.
אם הפעולה נכשלת, ההודעה של החריגה תכלול פרטים נוספים.
הסרה של חסימת מצב שינה במסך
צריך גם דרך לבטל את נעילת ההשכמה של המסך. לשם כך, קוראים ל-method release()
של האובייקט WakeLockSentinel
.
אם לא שומרים הפניה ל-WakeLockSentinel
, אין אפשרות לשחרר את הנעילה באופן ידני, אבל היא תשוחרר כשהכרטיסייה הנוכחית תהיה בלתי נראית.
אם רוצים לבטל אוטומטית את נעילת ההשכמה של המסך אחרי פרק זמן מסוים, אפשר להשתמש ב-window.setTimeout()
כדי לקרוא ל-release()
, כמו בדוגמה שלמטה.
// The wake lock sentinel.
let wakeLock = null;
// Function that attempts to request a screen wake lock.
const requestWakeLock = async () => {
try {
wakeLock = await navigator.wakeLock.request();
wakeLock.addEventListener('release', () => {
console.log('Screen Wake Lock released:', wakeLock.released);
});
console.log('Screen Wake Lock released:', wakeLock.released);
} catch (err) {
console.error(`${err.name}, ${err.message}`);
}
};
// Request a screen wake lock…
await requestWakeLock();
// …and release it again after 5s.
window.setTimeout(() => {
wakeLock.release();
wakeLock = null;
}, 5000);
לאובייקט WakeLockSentinel
יש מאפיין בשם released
שמציין אם סנטינל כבר שוחרר.
הערך שלו הוא false
בהתחלה, והוא משתנה ל-true
אחרי שאירוע "release"
נשלח. המאפיין הזה עוזר למפתחי אתרים לדעת מתי נעילה שוחררה, כך שהם לא צריכים לעקוב אחרי זה באופן ידני.
היא זמינה מגרסה Chrome 87.
מחזור החיים של חסימות מצב שינה במסך
כשמפעילים את הדמו של נעילת המסך במצב פעיל, אפשר לראות שנעילות המסך במצב פעיל רגישות לנראות הדף. המשמעות היא שחסימת מצב שינה של המסך תבוטל באופן אוטומטי כשממזערים כרטיסייה או חלון, או כשעוברים מכרטיסייה או מחלון שבהם חסימת מצב שינה של המסך פעילה.
כדי להשיג מחדש את חסימת מצב השינה במסך, צריך להאזין לאירוע visibilitychange
ולבקש חסימת מצב שינה חדשה במסך כשהוא מתרחש:
const handleVisibilityChange = async () => {
if (wakeLock !== null && document.visibilityState === 'visible') {
await requestWakeLock();
}
};
document.addEventListener('visibilitychange', handleVisibilityChange);
צמצום ההשפעה על משאבי המערכת
האם כדאי להשתמש בנעילת השכמה של המסך באפליקציה? הגישה שבה תבחרו תלויה בצרכים של האפליקציה. בכל מקרה, מומלץ להשתמש בגישה הקלה ביותר שאפשר כדי למזער את ההשפעה של האפליקציה על משאבי המערכת.
לפני שמוסיפים לאפליקציה נעילת השכמה של המסך, כדאי לשקול אם אפשר לפתור את תרחישי השימוש באמצעות אחד מהפתרונות החלופיים הבאים:
- אם האפליקציה מבצעת הורדות ארוכות, כדאי להשתמש בשליפה ברקע.
- אם האפליקציה מסנכרנת נתונים משרת חיצוני, כדאי להשתמש בסנכרון ברקע.
הדגמה (דמו)
מומלץ לעיין בהדגמה של Screen Wake Lock ובמקור ההדגמה. שימו לב שנעילת ההשכמה של המסך משתחררת אוטומטית כשעוברים בין כרטיסיות או אפליקציות.
חסימות מצב שינה במסך במנהל המשימות של מערכת ההפעלה
אתם יכולים להשתמש במנהל המשימות של מערכת ההפעלה כדי לראות אם אפליקציה מונעת מהמחשב להיכנס למצב שינה. בסרטון שלמטה מוצג הכלי לניטור פעילות ב-macOS, שבו רואים של-Chrome יש נעילת השכמה פעילה של המסך שמונעת את מצב השינה של המערכת.
משוב
ה-Web Platform Incubator Community Group (WICG) וצוות Chrome רוצים לשמוע את המחשבות והחוויות שלכם לגבי Screen Wake Lock API.
נשמח לקבל מידע על עיצוב ה-API
האם יש משהו ב-API שלא פועל כמו שציפית? או האם חסרות שיטות או מאפיינים שצריך להטמיע כדי ליישם את הרעיון?
- אפשר לפתוח בעיה במפרט במאגר GitHub של Screen Wake Lock API או להוסיף את המחשבות שלכם לבעיה קיימת.
דיווח על בעיה בהטמעה
מצאתם באג בהטמעה של Chrome? או שההטמעה שונה מהמפרט?
- מדווחים על באג בכתובת https://new.crbug.com. חשוב לכלול כמה שיותר פרטים, לספק הוראות פשוטות לשחזור הבאג ולהגדיר את המרכיבים לערך
Blink>WakeLock
.
תמיכה ב-API
האם אתם מתכננים להשתמש ב-Screen Wake Lock API? התמיכה הציבורית שלכם עוזרת לצוות Chrome לתעדף תכונות ומראה לספקי דפדפנים אחרים עד כמה חשוב לתמוך בהן.
- משתפים את התוכניות שלכם לגבי השימוש ב-API בשרשור ב-WICG Discourse.
- אתם יכולים לשלוח ציוץ אל @ChromiumDev באמצעות ההאשטאג
#WakeLock
ולספר לנו איפה ואיך אתם משתמשים בו.
קישורים שימושיים
- מפרט המלצה למועמד | טיוטה של העורך
- Screen Wake Lock Demo | Screen Wake Lock Demo source
- באג במעקב
- ערך ב-ChromeStatus.com
- ניסוי עם Wake Lock API
- רכיב Blink:
Blink>WakeLock
תודות
תמונה ראשית (Hero) מאת Kate Stone Matheson ב-Unsplash. סרטון מנהל המשימות באדיבותו של Henry Lim.