אם אתם בונים אפליקציה שפועלת במצב אופליין, כדי לבצע אופטימיזציה של החוויה, חשוב מאוד להבין את האינטראקציה של המשתמשים עם האפליקציה כשאין להם קישוריות.
ספקי 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, יש לבצע את הצעדים הבאים:
- יוצרים מאפיין מותאם אישית חדש ב-Google Analytics. תנו לה שם כמו "Network Status" (סטטוס הרשת) והגדירו את ההיקף שלה ל-"hit" (כי כל אינטראקציה יכולה להיות אופליין).
רשום את האינדקס שהוקצה למאפיין החדש שנוצר, והעבר אותו בתור שם הפרמטר לאפשרות התצורה
parameterOverrides
בקוד של Google Analytics בתיבת Workbox.לדוגמה, אם זה המאפיין המותאם אישית הראשון, האינדקס שלו יהיה
1
, ושם הפרמטר יהיהcd1
(אם האינדקס היה8
, הוא יהיהcd8
):import * as googleAnalytics from 'workbox-google-analytics'; googleAnalytics.initialize({ parameterOverrides: { cd1: 'offline', }, });
(אופציונלי) מכיוון שהערכים ב-
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
:
- צרו מדד מותאם אישית חדש ב-Google Analytics. נותנים לו שם כמו "מצב תור לא מקוון", הגדירו את ההיקף שלו ל "היט", והגדירו את סוג העיצוב שלו ל "זמן" (בשניות).
משתמשים באפשרות
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,
)
פרמטרים
-
אפשרויות
GoogleAnalyticsInitializeOptions אופציונלי