המדיניות בנושא הפעלה אוטומטית ב-Chrome

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

François Beaufort
François Beaufort

כללי המדיניות של Chrome לגבי הפעלה אוטומטית השתנו באפריל 2018, ואני כאן כדי להסביר למה זה קרה ואיך זה משפיע על הפעלת סרטונים עם אודיו. התראת ספוילר: המשתמשים יאהבו את זה!

לואיס ניסון: אני אמצא אותך ואני אשהה אותך.
שון בין: אי אפשר פשוט להפעיל סרטונים באופן אוטומטי.
מימים באינטרנט עם התג 'הפעלה אוטומטית' שנמצאים ב-Imgflip וב-Imgur.

התנהגויות חדשות

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

המדיניות של Chrome בנושא הפעלה אוטומטית פשוטה:

מדד ההתעניינות בתוכן

מדד ההתעניינות במדיה (MEI) מודד את הנטייה של אנשים לצרוך מדיה באתר. הגישה של Chrome היא חישוב היחס בין הביקורים לבין אירועי הפעלת מדיה משמעותיים לכל מקור:

  • צריכת המדיה (אודיו/וידאו) חייבת להיות של יותר משבע שניות.
  • האודיו צריך להיות קיים ולבטל את ההשתקה.
  • הכרטיסייה עם הסרטון פעילה.
  • גודל הסרטון (בפיקסלים) צריך להיות גדול מ-200x140.

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

ה-MEI של המשתמש זמין בדף הפנימי about://media-engagement.

צילום מסך של הדף הפנימי about://media-engagement.
צילום מסך של הדף הפנימי about://media-engagement ב-Chrome.

מתגים למפתחים

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

  • אפשר להשבית לגמרי את המדיניות בנושא הפעלה אוטומטית באמצעות דגל שורת הפקודה: chrome.exe --autoplay-policy=no-user-gesture-required. כך תוכלו לבדוק את האתר כאילו המשתמש מתעניין בו מאוד והפעלה אוטומטית תמיד תהיה מותרת.

  • אתם יכולים גם להחליט לוודא שהפעלה אוטומטית לא תהיה מותרת אף פעם על ידי השבתת MEI, ולהחליט אם אתרים עם MEI הכולל הגבוה ביותר יפעילו הפעלה אוטומטית כברירת מחדל למשתמשים חדשים. כך עושים זאת באמצעות דגלים: chrome.exe --disable-features=PreloadMediaEngagementData, MediaEngagementBypassAutoplayPolicies.

הענקת גישה ל-Iframe

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

<!-- Autoplay is allowed. -->
<iframe src="https://cross-origin.com/myvideo.html" allow="autoplay">

<!-- Autoplay and Fullscreen are allowed. -->
<iframe src="https://cross-origin.com/myvideo.html" allow="autoplay; fullscreen">

כשמדיניות ההרשאות להפעלה אוטומטית מושבתת, קריאות ל-play() ללא תנועת משתמש יגרמו לדחייה של ההבטחה עם NotAllowedError DOMException. המערכת תתעלם גם ממאפיין ההפעלה האוטומטית.

דוגמאות

דוגמה 1: בכל פעם שמשתמש נכנס אל VideoSubscriptionSite.com במחשב הנייד, הוא צופה בתוכנית טלוויזיה או בסרט. מכיוון שהציון של מעורבות המדיה במדיה גבוה, הפעלה אוטומטית מותרת.

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

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

דוגמה 4: MyMovieReviewBlog.com מטמיע iframe עם טריילר לסרט כדי להציג אותו בביקורת. משתמשים קיימו אינטראקציה עם הדומיין כדי להגיע לבלוג, לכן ההפעלה האוטומטית מותרת. עם זאת, כדי שהתוכן יופעל באופן אוטומטי, צריך להקצות את ההרשאה הזו ל-iframe באופן מפורש בבלוג.

כללי המדיניות של Chrome Enterprise

אפשר לשנות את התנהגות ההפעלה האוטומטית באמצעות כללי המדיניות של Chrome Enterprise בתרחישי שימוש כמו קיוסקים או מערכות ללא ניטור. בדף העזרה רשימת המדיניות מוסבר איך מגדירים את כללי המדיניות הארגוניים שקשורים להפעלה האוטומטית:

  • המדיניות AutoplayAllowed קובעת אם ההפעלה האוטומטית מותרת או לא.
  • המדיניות AutoplayAllowlist מאפשרת לציין רשימת היתרים של תבניות URL שבהן ההפעלה האוטומטית תמיד תהיה מופעלת.

שיטות מומלצות למפתחי אתרים

רכיבי אודיו/וידאו

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

תמיד צריך להסתכל על ה-Promise שהוחזר על ידי פונקציית ההפעלה כדי לראות אם היא נדחתה:

var promise = document.querySelector('video').play();

if (promise !== undefined) {
  promise.then(_ => {
    // Autoplay started!
  }).catch(error => {
    // Autoplay was prevented.
    // Show a "Play" button so that user can start playback.
  });
}

אחת הדרכים המגניבות לעורר עניין בקרב המשתמשים היא להשתמש בהפעלה אוטומטית עם קול מושתק ולאפשר להם לבחור לבטל את ההשתקה. (ראו דוגמה בהמשך). יש אתרים שכבר עושים זאת בצורה יעילה, כולל Facebook‏, Instagram‏, Twitter ו-YouTube.

<video id="video" muted playsinline autoplay>
<button id="unmuteButton"></button>

<script>
  unmuteButton.addEventListener('click', function() {
    video.muted = false;
  });
</script>

עדיין צריך להגדיר באופן עקבי את האירועים שמפעילים הפעלת משתמש בכל הדפדפנים. לכן, מומלץ להשתמש ב-"click" בינתיים. בעיה ב-GitHub‏ whatwg/html#3849

Web Audio

Web Audio API מכוסה בהפעלה אוטומטית ב-Chrome 71. יש כמה דברים שחשוב לדעת עליו. קודם כול, מומלץ להמתין לאינטראקציה של המשתמש לפני שמתחילים את ההפעלה של האודיו, כדי שהמשתמשים ידעו שמשהו קורה. לדוגמה, אפשר לחשוב על לחצן הפעלה או על מתג הפעלה/כיבוי. אפשר גם להוסיף לחצן 'ביטול ההשתקה', בהתאם לתהליך השימוש באפליקציה.

אם יוצרים את AudioContext בזמן טעינת הדף, צריך להפעיל את resume() זמן מה אחרי שהמשתמש יוצר אינטראקציה עם הדף (למשל, אחרי שמשתמש לוחץ על לחצן). לחלופין, ה-AudioContext יופעל מחדש אחרי תנועת משתמש אם תתבצע קריאה ל-start() באחד מהצמתים המצורפים.

// Existing code unchanged.
window.onload = function() {
  var context = new AudioContext();
  // Setup all nodes
  // ...
}

// One-liner to resume playback when user interacted with the page.
document.querySelector('button').addEventListener('click', function() {
  context.resume().then(() => {
    console.log('Playback resumed successfully');
  });
});

אפשר גם ליצור את AudioContext רק כשמשתמש מקיים אינטראקציה עם הדף.

document.querySelector('button').addEventListener('click', function() {
  var context = new AudioContext();
  // Setup all nodes
  // ...
});

כדי לבדוק אם הדפדפן דורש אינטראקציה של המשתמש כדי להפעיל אודיו, בודקים את הערך של AudioContext.state אחרי שיוצרים אותו. אם ההפעלה מותרת, הערך אמור לעבור מיד ל-running. אחרת, יהיה suspended. אם מקשיב לאירוע statechange, אפשר לזהות שינויים באופן אסינכרוני.

דוגמה לכך היא בקשת משיכה קטנה לתיקון ההפעלה של Web Audio בהתאם לכללי המדיניות האלה בנושא הפעלה אוטומטית באתר https://airhorner.com.