หากคุณกำลังสร้างแอปพลิเคชันที่ทำงานแบบออฟไลน์ได้ การทำความเข้าใจวิธีที่ผู้ใช้โต้ตอบกับแอปเมื่อไม่มีการเชื่อมต่อเป็นสิ่งสำคัญในการเพิ่มประสิทธิภาพประสบการณ์นั้น
ผู้ให้บริการ Analytics อย่างเช่น Google Analytics กำหนดให้ต้องเชื่อมต่อเครือข่ายเพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์ ซึ่งหมายความว่าหากไม่มีการเชื่อมต่อ คำขอเหล่านั้นจะล้มเหลวและการโต้ตอบเหล่านั้นจะหายไปจากรายงาน Analytics แบบว่ามันไม่เคยเกิดขึ้นมาก่อน
Workbox Google Analytics แก้ปัญหานี้สำหรับผู้ใช้ Google Analytics โดยใช้ประโยชน์จากความสามารถของ Service Worker ในการตรวจหาคำขอที่ล้มเหลว
Google Analytics จะได้รับข้อมูลทั้งหมดผ่านคำขอ HTTP ไปยัง Measurement Protocol ซึ่งหมายความว่าสคริปต์ Service Worker สามารถเพิ่มตัวแฮนเดิลการดึงข้อมูลเพื่อตรวจหาคำขอที่ล้มเหลวซึ่งส่งไปยัง Measurement Protocol ได้ ซึ่งสามารถจัดเก็บคำขอเหล่านี้ใน IndexedDB แล้วลองใหม่ในภายหลังเมื่อการเชื่อมต่อกลับมาแล้ว
Workbox Google Analytics จะทำหน้าที่นี้ นอกจากนี้ยังเพิ่มเครื่องจัดการการดึงข้อมูลเพื่อแคชสคริปต์ analytics.js และ gtag.js เพื่อให้เรียกใช้แบบออฟไลน์ได้ด้วย สุดท้ายนี้ เมื่อส่งคำขอที่ล้มเหลวอีกครั้ง Google Analytics จะตั้งค่า (หรืออัปเดต) qt
ในเพย์โหลดคำขอโดยอัตโนมัติเพื่อให้มั่นใจว่าการประทับเวลาใน 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
ในกรณีที่ต้องมีการคำนวณค่าของพารามิเตอร์หนึ่งๆ ในรันไทม์หรือได้มาจากค่าของพารามิเตอร์อื่น
ตัวอย่างด้านล่างแสดงวิธีที่คุณจะใช้ทั้ง 2 ตัวเลือก
ตัวอย่าง
การใช้มิติข้อมูลที่กำหนดเองเพื่อติดตามการโต้ตอบออนไลน์และออฟไลน์
Google Analytics ไม่มีมิติข้อมูลในตัวสำหรับการโต้ตอบออนไลน์กับออฟไลน์ อย่างไรก็ตาม คุณสามารถสร้างมิติข้อมูลของคุณเองเพื่อวัตถุประสงค์นี้โดยเฉพาะได้โดยใช้ฟีเจอร์ที่เรียกว่ามิติข้อมูลที่กำหนดเอง
ในการติดตามคำขอที่โปรแกรมทำงานของบริการเล่นซ้ำโดยใช้มิติข้อมูลที่กำหนดเองด้วย Google Analytics ของ Workbox ให้ทำตามขั้นตอนต่อไปนี้
- สร้างมิติข้อมูลที่กำหนดเองใหม่ใน Google Analytics ตั้งชื่ออย่างเช่น "สถานะเครือข่าย" แล้วตั้งขอบเขตเป็น "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'
สำหรับมิติข้อมูลที่กำหนดเอง "สถานะเครือข่าย" สำหรับคำขอทั้งหมดที่โปรแกรมทำงานของบริการไม่ได้เล่นซ้ำ<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 ตั้งชื่ออย่างเช่น "เวลาในคิวออฟไลน์" ตั้งขอบเขตเป็น "Hit" แล้วตั้งค่าประเภทการจัดรูปแบบเป็น "เวลา" (เป็นวินาที)
ใช้ตัวเลือก
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); }, });
การทดสอบ Workbox Google Analytics
เนื่องจาก Google Analytics ใช้ Workbox ใช้การซิงค์ในเบื้องหลังเพื่อเล่นเหตุการณ์ซ้ำ การทดสอบจึงอาจทำงานได้ยาก โปรดอ่านข้อมูลเพิ่มเติมที่การทดสอบการซิงค์ในเบื้องหลังสำหรับ Workbox
ประเภท
GoogleAnalyticsInitializeOptions
พร็อพเพอร์ตี้
-
cacheName
string ไม่บังคับ
-
parameterOverrides
ออบเจ็กต์ ไม่บังคับ
-
hitFilter
เป็นโมฆะ ไม่บังคับ
ฟังก์ชัน
hitFilter
มีลักษณะดังนี้(params: URLSearchParams) => {...}
-
params
URLSearchParams
-
วิธีการ
initialize()
workbox-google-analytics.initialize(
options?: GoogleAnalyticsInitializeOptions,
)
พารามิเตอร์
-
ตัวเลือก
GoogleAnalyticsInitializeOptions ไม่บังคับ