Jeśli tworzysz aplikację, która działa w trybie offline, musisz wiedzieć, jak użytkownicy korzystają z aplikacji, gdy nie mają połączenia z internetem. Jest to kluczowe dla optymalizacji działania aplikacji.
Dostawcy usług analitycznych, tacy jak Google Analytics wymaga sieci wysyła dane na ich serwery, co oznacza, że jeśli połączenie jest niedostępne, te żądania zakończą się niepowodzeniem, a interakcje zostaną których brakuje w raportach statystycznych. Zupełnie tak, jakby nigdy nic się nie stało.
Workbox Google Analytics rozwiązuje ten problem dzięki wykorzystanie możliwości wykrywania nieudanych żądań przez mechanizmy Service Worker.
Google Analytics otrzymuje wszystkie dane przez żądania HTTP wysyłane do Measurement Protocol, co oznacza, że skrypt service worker może dodać moduł obsługi pobierania w celu wykrywania wysłanych do Measurement Protocol. Może on przechowywać te żądania w IndexedDB, a potem ponownie wysyłać je, gdy tylko połączenie zostanie przywrócone.
Do tego właśnie służy Google Analytics. Dodaje też funkcję pobierania
moduły obsługi buforowania
analytics.js oraz
gtag.js
dzięki czemu można je również uruchamiać offline. Wreszcie, jeśli nieudane żądania są
Google Analytics automatycznie ustawia (lub aktualizuje) także
qt
w ładunku żądania, tak by sygnatury czasowe w Google Analytics odzwierciedlały
czas pierwotnej interakcji z użytkownikiem.
Włączanie Google Analytics w Workbox
Aby włączyć Google Analytics w Workbox, wywołaj metodę initialize()
:
import * as googleAnalytics from 'workbox-google-analytics';
googleAnalytics.initialize();
To jedyny kod wymagany do umieszczania w kole i powtarzania nieudanych próśb wysyłanych do Google Analytics. Jest to też najprostszy sposób na uruchomienie Google Analytics w trybie offline.
Jeśli jednak używasz tylko powyższego kodu, ponawiane żądania są nie da się odróżnić od tych, które okażą się skuteczne za pierwszym razem. Oznacza to, że otrzymasz wszystkie dane o interakcjach użytkowników offline, ale nie będziesz mieć możliwości określenia, które interakcje miały miejsce, gdy użytkownik był offline.
Aby rozwiązać ten problem, możesz użyć jednego z opcji konfiguracji opisanych poniżej, aby zmodyfikować lub opatrzyć adnotacjami dane wysyłane w powtórzonej prośbie.
Modyfikowanie danych, które mają być wysyłane
Jeśli chcesz mieć możliwość odróżniania ponownych żądań od tych, które nie zostały ponowione
możesz określić parameterOverrides
albo hitFilter
opcji konfiguracji.
Te opcje umożliwiają modyfikowanie parametrów protokołu Measurement Protocol, które są wysyłane w powtórzonym żądaniu. Opcji parameterOverrides
należy używać, gdy chcesz ustawić tę samą wartość danego parametru w przypadku każdego żądania, które zostało wysłane ponownie. Opcji hitFilter
należy używać w przypadkach, gdy wartość danego parametru musi być obliczana w czasie wykonywania lub pochodzić z wartości innego parametru.
Poniższe przykłady pokazują, jak możesz korzystać z obu tych opcji.
Przykłady
Używanie wymiaru niestandardowego do śledzenia interakcji online i offline
Google Analytics nie ma wbudowanej wymiany dotyczącej interakcji online i offline. Możesz jednak utworzyć własny wymiar, by za pomocą funkcji wymiarów niestandardowych.
Aby śledzić za pomocą Google Analytics Workbox żądania odtworzone przez service workera za pomocą wymiaru niestandardowego, wykonaj te czynności:
- Utwórz nowy wymiar niestandardowy w Google Analytics. Nadaj mu nazwę, np. „Stan sieci”, i ustaw zakres na „hit” (ponieważ każda interakcja może odbywać się w trybie offline).
Zanotuj indeks przypisany do nowo utworzonego wymiaru i przekaż go jako nazwę parametru do opcji konfiguracji
parameterOverrides
w kodzie Google Analytics Workbox.Jeśli np. jest to pierwszy wymiar niestandardowy, jego indeks będzie wyglądać tak:
1
, a nazwa parametru będzie miała postaćcd1
(jeśli indeks będzie miał wartość8
, tocd8
):import * as googleAnalytics from 'workbox-google-analytics'; googleAnalytics.initialize({ parameterOverrides: { cd1: 'offline', }, });
(Opcjonalnie) Ponieważ wartości w polu
parameterOverrides
są stosowane tylko do powtórnych („offline”) żądań, warto też ustawić wartość domyślną „online” dla wszystkich innych żądań. Nie jest to konieczne, ale ułatwia czytanie raportów.
Na przykład: jeśli używasz domyślnego fragmentu kodu śledzenia analytics.js do instalacji Google Analytics, możesz dodać wierszga('set', 'dimension1', 'online')
aby użyć domyślnej wartości'online'
w kolumnie „Stan sieci” wymiar niestandardowy dla wszystkich żądań, które nie zostały ponownie odtworzone przez skrypt 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>
Śledzenie czasu oczekiwania żądań w kolejce za pomocą danych niestandardowych
Jeśli chcesz wiedzieć, ile czasu minęło od interakcji offline do przywrócenia połączenia i powtórnego wysłania żądania, możesz to śledzić za pomocą danych niestandardowych i opcji konfiguracji hitFilter
:
- Tworzenie nowych danych niestandardowych w Google Analytics. Nadaj mu nazwę, np. „Offline Queue Time”, ustaw zakres na „hit” i ustaw typ formatowania na „Czas” (w sekundach).
Użyj opcji
hitFilter
, aby uzyskać wartość parametruqt
, i podziel ją przez 1000 (aby przeliczyć ją na sekundy). Następnie ustaw tę wartość jako parametr z indeksem nowo utworzonych wskaźników. Jeśli są to pierwsze dane niestandardowe, nazwa parametru będzie wyglądać tak:'cm1'
:import * as googleAnalytics from 'workbox-google-analytics'; googleAnalytics.initialize({ hitFilter: (params) => { const queueTimeInSeconds = Math.round(params.get('qt') / 1000); params.set('cm1', queueTimeInSeconds); }, });
Testowanie Workboxa w Google Analytics
Google Analytics używa synchronizacji w tle do odtwarzania zdarzeń Workbox, dzięki czemu może ich testowanie jest nieintuicyjne. Więcej informacji znajdziesz w artykule Testowanie synchronizacji Workboxa w tle.
Typy
GoogleAnalyticsInitializeOptions
Właściwości
-
cacheName
ciąg znaków opcjonalny
-
parameterOverrides
obiekt opcjonalny
-
hitFilter
void opcjonalne
Funkcja
hitFilter
wygląda tak:(params: URLSearchParams) => {...}
-
params
URLSearchParams
-
Metody
initialize()
workbox-google-analytics.initialize(
options?: GoogleAnalyticsInitializeOptions,
)
Parametry
-
Opcje
GoogleAnalyticsInitializeOptions opcjonalnie