תיבת עבודה-google-analytics

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

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

Workbox Google Analytics פותר בעיה זו עבור משתמשי Google Analytics על ידי מינוף היכולת של Service Worker לזהות בקשות שנכשלו.

מערכת Google Analytics מקבלת את כל הנתונים דרך בקשות HTTP ל-Measurement Protocol, כך שסקריפט של Service Worker יכול להוסיף handler של אחזור כדי לזהות בקשות שנכשלו שנשלחות ל-Measurement Protocol. הוא יכול לאחסן את הבקשות האלה ב-IndexedDB ואז לנסות אותן שוב מאוחר יותר אחרי שהקישוריות תשוחזר.

Google Analytics עושה בדיוק את הפעולה הזו. הוא גם מוסיף רכיבי handler של אחזור כדי לשמור במטמון את הסקריפטים analytics.js ו-gtag.js, כדי שאפשר יהיה להריץ אותם גם במצב אופליין. לבסוף, כשמתבצע ניסיון חוזר של בקשות שנכשלו, Workbox Google Analytics מגדיר (או מעדכן) באופן אוטומטי את qt במטען הייעודי (payload) של הבקשה, כדי לוודא שחותמות הזמן ב-Google Analytics משקפות את הזמן של האינטראקציה המקורית של המשתמש.

הפעלה של Workbox ב-Google Analytics

כדי להפעיל את Workbox Google Analytics, קרא לשיטה initialize():

import * as googleAnalytics from 'workbox-google-analytics';

googleAnalytics.initialize();

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

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

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

שינוי הנתונים שנשלחים

כדי להבדיל בין בקשות לניסיון חוזר לבין בקשות שלא בוצע ניסיון חוזר, אפשר לציין את אפשרויות ההגדרה parameterOverrides או hitFilter.

בעזרת האפשרויות האלה תוכלו לשנות את הפרמטרים של Measurement Protocol שנשלחים בבקשה המנסים שוב. יש להשתמש באפשרות parameterOverrides כשרוצים להגדיר את אותו ערך לפרמטר מסוים בכל בקשה שמנסים שוב. כדאי להשתמש באפשרות hitFilter במקרים שבהם צריך לחשב את הערך של פרמטר מסוים בזמן הריצה או שנגזר מהערך של פרמטר אחר.

הדוגמאות הבאות מראות איך משתמשים בשתי האפשרויות.

דוגמאות

שימוש במאפיין מותאם אישית למעקב אחרי אינטראקציות אונליין לעומת אינטראקציות אופליין

ל-Google Analytics אין מאפיין מובנה לאינטראקציה אונליין לעומת אינטראקציות אופליין. עם זאת, תוכלו ליצור מאפיין משלכם למטרה הזו בדיוק באמצעות תכונה שנקראת מאפיינים מותאמים אישית.

כדי לעקוב אחר בקשות שהופעלו מחדש על ידי קובץ השירות (service worker) באמצעות מאפיין מותאם אישית עם Workbox Google Analytics, יש לבצע את הצעדים הבאים:

  1. יוצרים מאפיין מותאם אישית חדש ב-Google Analytics. תנו לה שם כמו "Network Status" (סטטוס הרשת) והגדירו את ההיקף שלה ל-"hit" (כי כל אינטראקציה יכולה להיות אופליין).
  2. רשום את האינדקס שהוקצה למאפיין החדש שנוצר, והעבר אותו בתור שם הפרמטר לאפשרות התצורה parameterOverrides בקוד של Google Analytics בתיבת Workbox.

    לדוגמה, אם זה המאפיין המותאם אישית הראשון, האינדקס שלו יהיה 1, ושם הפרמטר יהיה cd1 (אם האינדקס היה 8, הוא יהיה cd8):

    import * as googleAnalytics from 'workbox-google-analytics';
    
    googleAnalytics.initialize({
      parameterOverrides: {
        cd1: 'offline',
      },
    });
    
  3. (אופציונלי) מכיוון שהערכים ב-parameterOverrides חלים רק על בקשות לניסיון חוזר ('אופליין), יכול להיות שתרצו להגדיר את ערך ברירת המחדל 'online' לכל שאר הבקשות. אומנם זה לא חובה, אבל הוא יקל על הקריאה.

    לדוגמה, אם השתמשתם בקטע הקוד למעקב של analytics.js שמוגדר כברירת מחדל כדי להתקין את Google Analytics, אפשר להוסיף את השורה ga('set', 'dimension1', 'online') כדי להשתמש בערך ברירת המחדל של 'online' עבור המאפיין המותאם אישית 'סטטוס רשת', לכל הבקשות שלא הופעלו מחדש על ידי ה-Service Worker.

    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
    
      ga('create', 'UA-XXXXX-Y', 'auto');
    
      // Set default value of custom dimension 1 to 'online'
      ga('set', 'dimension1', 'online');
    
      ga('send', 'pageview');
    </script>
    

שימוש במדד מותאם אישית למעקב אחרי בקשות זמן שהוקדשו לתור

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

  1. צרו מדד מותאם אישית חדש ב-Google Analytics. נותנים לו שם כמו "מצב תור לא מקוון", הגדירו את ההיקף שלו ל "היט", והגדירו את סוג העיצוב שלו ל "זמן" (בשניות).
  2. משתמשים באפשרות hitFilter על מנת לקבל את הערך של הפרמטר qt ולחלק אותו ב-1000 (כדי להמיר אותו לשניות). לאחר מכן צריך להגדיר את הערך הזה כפרמטר עם האינדקס של המדד החדש שנוצר. אם זה המדד המותאם אישית הראשון שלכם, שם הפרמטר יהיה 'cm1':

    import * as googleAnalytics from 'workbox-google-analytics';
    
    googleAnalytics.initialize({
      hitFilter: (params) => {
        const queueTimeInSeconds = Math.round(params.get('qt') / 1000);
        params.set('cm1', queueTimeInSeconds);
      },
    });
    

בדיקת תיבת העבודה של Google Analytics

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

סוגים

GoogleAnalyticsInitializeOptions

תכונות

  • cacheName

    מחרוזת אופציונלי

  • parameterOverrides

    אובייקט אופציונלי

  • hitFilter

    ביטול אופציונלי

    הפונקציה hitFilter נראית כך:

    (params: URLSearchParams)=> {...}

    • params

      URLSearchParams

שיטות

initialize()

workbox-google-analytics.initialize(
  options?: GoogleAnalyticsInitializeOptions,
)

פרמטרים