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