اگر برنامهای میسازید که به صورت آفلاین کار میکند، درک نحوه تعامل کاربران با برنامه شما در زمانی که اتصال ندارند برای بهینهسازی آن تجربه بسیار مهم است.
ارائه دهندگان تجزیه و تحلیل مانند Google Analytics برای ارسال داده ها به سرورهای خود نیاز به اتصال شبکه دارند، به این معنی که اگر اتصال در دسترس نباشد، این درخواست ها با شکست مواجه می شوند و آن تعاملات در گزارش های تحلیلی شما وجود ندارد. انگار هرگز اتفاق نیفتاده اند
Workbox Google Analytics این مشکل را برای کاربران Google Analytics با استفاده از توانایی Service Worker برای شناسایی درخواستهای ناموفق حل میکند.
Google Analytics همه دادهها را از طریق درخواستهای HTTP به پروتکل اندازهگیری دریافت میکند، به این معنی که یک اسکریپت Service Worker میتواند یک کنترلکننده واکشی برای شناسایی درخواستهای ناموفق ارسالشده به پروتکل اندازهگیری اضافه کند. میتواند این درخواستها را در IndexedDB ذخیره کند و بعداً پس از بازیابی اتصال دوباره آنها را امتحان کند.
Workbox Google Analytics دقیقا این کار را انجام می دهد. همچنین کنترلکنندههای واکشی را برای ذخیرهسازی اسکریپتهای analytics.js و gtag.js اضافه میکند، بنابراین میتوان آنها را بهصورت آفلاین نیز اجرا کرد. در نهایت، هنگامی که درخواستهای ناموفق دوباره امتحان میشوند، Workbox Google Analytics همچنین بهطور خودکار qt
در بار درخواست تنظیم میکند (یا بهروزرسانی میکند) تا مطمئن شود مهرهای زمانی در Google Analytics منعکس کننده زمان تعامل کاربر اصلی است.
فعال کردن Workbox Google Analytics
برای فعال کردن Workbox Google Analytics، متد initialize()
را فراخوانی کنید:
import * as googleAnalytics from 'workbox-google-analytics';
googleAnalytics.initialize();
این تنها کدی است که برای صفبندی و امتحان مجدد درخواستهای ناموفق به Google Analytics لازم است، و این سادهترین راه برای آفلاین کردن Google Analytics است.
با این حال، اگر فقط از کد بالا استفاده کنید، درخواستهای تکرار شده از درخواستهایی که در اولین تلاش موفق میشوند قابل تشخیص نیستند. این بدان معناست که شما تمام دادههای تعامل را از کاربران آفلاین دریافت خواهید کرد، اما نمیتوانید تشخیص دهید که در زمانی که کاربر آفلاین بود، کدام تعامل رخ داده است.
برای رفع این نگرانی، می توانید از یکی از گزینه های پیکربندی که در زیر توضیح داده شده است برای تغییر یا حاشیه نویسی داده هایی که در درخواست مجدد ارسال می شوند استفاده کنید.
تغییر داده هایی که ارسال می شوند
اگر میخواهید بتوانید درخواستهای تکرار شده را از درخواستهای تکرار نشده متمایز کنید، میتوانید گزینههای پیکربندی parameterOverrides
یا hitFilter
را مشخص کنید.
این گزینهها به شما امکان میدهند پارامترهای پروتکل اندازهگیری را که در درخواست مجدد ارسال میشوند، تغییر دهید. گزینه parameterOverrides
باید زمانی استفاده شود که بخواهید برای هر درخواست مجدد یک مقدار را برای یک پارامتر خاص تنظیم کنید. گزینه hitFilter
باید در مواردی استفاده شود که مقدار یک پارامتر خاص باید در زمان اجرا محاسبه شود یا از مقدار پارامتر دیگری مشتق شود.
مثالهای زیر نشان میدهند که چگونه از هر دو گزینه استفاده میکنید.
نمونه ها
استفاده از یک بعد سفارشی برای ردیابی تعاملات آنلاین در مقابل آفلاین
Google Analytics یک بعد داخلی برای تعاملات آنلاین در مقابل آفلاین ندارد. با این حال، میتوانید با استفاده از قابلیتی به نام ابعاد سفارشی، بعد خود را دقیقاً برای این منظور ایجاد کنید.
برای ردیابی درخواستهایی که توسط سرویسکار با استفاده از یک بعد سفارشی با Workbox Google Analytics بازپخش شدهاند، این مراحل را دنبال کنید:
- یک بعد سفارشی جدید در Google Analytics ایجاد کنید . نامی مانند «وضعیت شبکه» به آن بدهید و دامنه آن را روی «ضربه» تنظیم کنید (زیرا هر تعاملی میتواند آفلاین باشد).
نمایه اختصاص داده شده برای بعد تازه ایجاد شده را یادداشت کنید و آن را به عنوان نام پارامتر به گزینه پیکربندی
parameterOverrides
در کد 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'
برای «شبکه» خود استفاده کنید. بعد سفارشی «وضعیت» برای همه درخواستهایی که توسط سرویسدهنده بازپخش نشده است.<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
را بدست آورید و آن را بر 1000 تقسیم کنید (برای تبدیل آن به ثانیه). سپس آن مقدار را با شاخص متریک جدید ایجاد شده به عنوان یک پارامتر تنظیم کنید. اگر این اولین معیار سفارشی شما است، نام پارامتر'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 از Background Sync برای پخش مجدد رویدادها استفاده می کند، آزمایش آن ممکن است غیرواقعی باشد. در تست Workbox Background Sync بیشتر بخوانید.
انواع
GoogleAnalyticsInitializeOptions
خواص
- cacheName
رشته اختیاری
- پارامتر لغو می شود
شی اختیاری
- hitFilter
باطل اختیاری
تابع
hitFilter
به شکل زیر است:(params: URLSearchParams) => {...}
- پارامترها
URLSearchParams
روش ها
پارامترها
- گزینه ها
GoogleAnalyticsInitializeOptions اختیاری است