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