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

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

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

הפתרון לבעיה הזו למשתמשים ב-Google Analytics הוא Workbox Google Analytics, שמשתמש ביכולת של Service Worker לזהות בקשות שנכשלו.

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

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

הפעלת Google Analytics ב-Workbox

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

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

googleAnalytics.initialize();

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

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

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

לקבוע אילו נתונים יישלחו

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

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

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

דוגמאות

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

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

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

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

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

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

    לדוגמה, אם השתמשתם בקטע הקוד ברירת המחדל של המעקב אחרי 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 ולחלק אותו ב-1,000 (כדי להמיר אותו לשניות). לאחר מכן מגדירים את הערך הזה כפרמטר עם המדד החדש שנוצר. אם זה המדד המותאם אישית הראשון שלכם, שם הפרמטר יהיה '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 ב-Workbox

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

סוגים

GoogleAnalyticsInitializeOptions

מאפיינים

  • cacheName

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

  • parameterOverrides

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

  • hitFilter

    void optional

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

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

    • פרמטרים

      URLSearchParams

שיטות

initialize()

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

פרמטרים