workbox-google-analytics

Als u een applicatie bouwt die offline werkt, is het van cruciaal belang om te begrijpen hoe gebruikers met uw app omgaan als ze geen connectiviteit hebben om die ervaring te optimaliseren.

Analyseproviders zoals Google Analytics hebben een netwerkverbinding nodig om gegevens naar hun servers te verzenden. Dit betekent dat als er geen verbinding beschikbaar is, deze verzoeken zullen mislukken en dat die interacties zullen ontbreken in uw analyserapporten. Het zal zijn alsof ze nooit hebben plaatsgevonden.

Workbox Google Analytics lost dit probleem voor Google Analytics-gebruikers op door gebruik te maken van het vermogen van Service Worker om mislukte verzoeken te detecteren.

Google Analytics ontvangt alle gegevens via HTTP-verzoeken aan het Measurement Protocol , wat betekent dat een Service Worker-script een ophaalhandler kan toevoegen om mislukte verzoeken te detecteren die naar het Measurement Protocol zijn verzonden. Het kan deze verzoeken opslaan in IndexedDB en ze later opnieuw proberen zodra de connectiviteit is hersteld.

Workbox Google Analytics doet precies dit. Het voegt ook ophaalhandlers toe om de scripts analytics.js en gtag.js in de cache op te slaan, zodat ze ook offline kunnen worden uitgevoerd. Ten slotte, wanneer mislukte verzoeken opnieuw worden geprobeerd, stelt Workbox Google Analytics ook automatisch de qt in de verzoekpayload in (of werkt deze bij) om ervoor te zorgen dat tijdstempels in Google Analytics de tijd van de oorspronkelijke gebruikersinteractie weerspiegelen.

Workbox Google Analytics inschakelen

Om Workbox Google Analytics in te schakelen, roept u de initialize() -methode aan:

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

googleAnalytics.initialize();

Dit is de enige code die nodig is om mislukte verzoeken aan Google Analytics in de wachtrij te plaatsen en opnieuw te proberen, en het is de eenvoudigste manier om Google Analytics offline te laten werken.

Als u echter alleen de bovenstaande code gebruikt, zijn de opnieuw geprobeerde verzoeken niet te onderscheiden van verzoeken die bij de eerste poging slagen. Dit betekent dat u alle interactiegegevens van offline gebruikers ontvangt, maar dat u niet kunt zien welke interacties hebben plaatsgevonden terwijl de gebruiker offline was.

Om dit probleem aan te pakken, kunt u een van de hieronder beschreven configuratieopties gebruiken om de gegevens die in het opnieuw geprobeerde verzoek worden verzonden, te wijzigen of te annoteren.

Aanpassen welke gegevens worden verzonden

Als u opnieuw geprobeerde aanvragen wilt kunnen onderscheiden van niet-opnieuw geprobeerde aanvragen, kunt u de configuratieopties parameterOverrides of hitFilter opgeven.

Met deze opties kunt u de Measurement Protocol-parameters wijzigen die in het opnieuw geprobeerde verzoek worden verzonden. De optie parameterOverrides moet worden gebruikt als u voor elke nieuwe aanvraag dezelfde waarde voor een bepaalde parameter wilt instellen. De optie hitFilter moet worden gebruikt in gevallen waarin de waarde van een bepaalde parameter tijdens runtime moet worden berekend of moet worden afgeleid van de waarde van een andere parameter.

De onderstaande voorbeelden laten zien hoe u beide opties zou gebruiken.

Voorbeelden

Een aangepaste dimensie gebruiken om online versus offline interacties bij te houden

Google Analytics heeft geen ingebouwde dimensie voor online versus offline interacties. U kunt echter precies voor dit doel uw eigen dimensie maken met behulp van een functie genaamd aangepaste dimensies .

Volg deze stappen om verzoeken bij te houden die door de servicemedewerker zijn herhaald met behulp van een aangepaste dimensie met Workbox Google Analytics:

  1. Maak een nieuwe aangepaste dimensie in Google Analytics. Geef het een naam zoals 'Netwerkstatus' en stel het bereik in op 'hit' (aangezien elke interactie offline kan zijn).
  2. Noteer de index die is toegewezen aan de nieuw gemaakte dimensie en geef die als parameternaam door aan de parameterOverrides configuratieoptie in uw Workbox Google Analytics-code.

    Als dit bijvoorbeeld uw eerste aangepaste dimensie is, zou de index 1 zijn en de parameternaam cd1 (als de index 8 was, zou het cd8 zijn):

    import * as googleAnalytics from 'workbox-google-analytics';
    
    googleAnalytics.initialize({
      parameterOverrides: {
        cd1: 'offline',
      },
    });
    
  3. (Optioneel) Omdat waarden in parameterOverrides alleen worden toegepast op opnieuw geprobeerde ("offline") verzoeken, wilt u wellicht ook de standaardwaarde "online" instellen voor alle andere verzoeken. Hoewel dit niet strikt noodzakelijk is, worden uw rapporten wel gemakkelijker leesbaar.

    Als u bijvoorbeeld het standaard trackingfragment van analytics.js heeft gebruikt om Google Analytics te installeren, kunt u de regel ga('set', 'dimension1', 'online') toevoegen om de standaardwaarde 'online' te gebruiken voor uw 'Netwerk Status" aangepaste dimensie voor alle aanvragen die niet opnieuw worden afgespeeld door de servicemedewerker.

    <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>
    

Gebruik een aangepaste statistiek om de tijd bij te houden die verzoeken in de wachtrij hebben doorgebracht

Als u benieuwd was hoeveel tijd er was verstreken tussen het moment waarop een offline interactie plaatsvond en het moment waarop de connectiviteit werd hersteld en het verzoek opnieuw werd geprobeerd, kunt u dit volgen met behulp van een aangepaste statistiek en de hitFilter configuratieoptie:

  1. Maak een nieuwe aangepaste statistiek in Google Analytics. Geef het een naam zoals "Offline wachtrijtijd", stel het bereik in op "hit" en stel het opmaaktype in op "Tijd" (in seconden).
  2. Gebruik de optie hitFilter om de waarde van de parameter qt te verkrijgen en deze door 1000 te delen (om deze naar seconden te converteren). Stel die waarde vervolgens in als parameter met de index van de nieuw gemaakte metriek. Als dit uw eerste aangepaste statistiek is, zou de parameternaam 'cm1' zijn:

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

Workbox Google Analytics testen

Omdat Workbox Google Analytics achtergrondsynchronisatie gebruikt om gebeurtenissen opnieuw af te spelen, kan het niet intuïtief zijn om te testen. Lees meer op Workbox Background Sync testen .

Soorten

GoogleAnalyticsInitializeOptions

Eigenschappen

  • cacheNaam

    tekenreeks optioneel

  • parameterOverschrijvingen

    object optioneel

  • hitFilter

    ongeldig optioneel

    De hitFilter functie ziet er als volgt uit:

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

    • parameters

      URLSearchParams

Methoden

initialize()

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

Parameters