Workbox-google-analytics

إذا كنت تنشئ تطبيقًا يعمل بلا اتصال بالإنترنت، يمكنك التعرّف على كيفية تفاعل المستخدمين مع تطبيقك عندما يكون غير متصل بالإنترنت أمرًا بالغ الأهمية لتحسين هذه التجربة

يتطلّب مقدّمو خدمات الإحصاءات، مثل إحصاءات Google، اتصالاً بالشبكة لإرسال البيانات إلى خوادمهم، ما يعني أنّه في حال عدم توفّر اتصال، لن تنجح هذه الطلبات ولن تظهر هذه التفاعلات في تقارير الإحصاءات. إنها لن تحدث أبدًا.

يحل Workbox Google Analytics هذه المشكلة لمستخدمي Google Analytics عن طريق الاستفادة من قدرة "مشغّل الخدمات" على اكتشاف الطلبات التي تعذّر تنفيذها

يتلقى Google Analytics كل البيانات عبر طلبات HTTP إلى Measurement Protocol ما يعني أنّ النص البرمجي لمشغّل الخدمات يمكنه إضافة معالج استرجاع لرصد الطلبات التي تعذّر إرسالها إلى Measurement Protocol. يمكنه تخزين هذه في IndexedDB ثم أعِد المحاولة لاحقًا بعد تنفيذ الاتصال تمت استعادتها.

وتنفّذ خدمة Workbox Google Analytics هذا الأمر بالضبط. وتضيف هذه الميزة أيضًا عناصر تحكّم في الجلب لتخزين ملفّات برمجية analytics.js و gtag.js في ذاكرة التخزين المؤقت، حتى يمكن تشغيلها أيضًا بلا إنترنت. أخيرًا، عند محاولة تنفيذ الطلبات التي تعذّر إكمالها مجددًا، تضبط "إحصاءات Google" في Workbox أيضًا تلقائيًا (أو تعدّل) القيمة qt في الحمولة المطلوبة لضمان أن تعكس الطوابع الزمنية في "إحصاءات Google" وقت تفاعل المستخدم الأصلي.

تفعيل Workbox Google Analytics

لتفعيل "إحصاءات Google" في Workbox، يمكنك استدعاء طريقة initialize():

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

googleAnalytics.initialize();

هذا هو الرمز البرمجي الوحيد المطلوب لوضع الطلبات غير الناجحة في "إحصاءات Google" في قائمة الانتظار وإعادة محاولة إرسالها، وهو أبسط طريقة لتشغيل "إحصاءات Google" بدون اتصال بالإنترنت.

ومع ذلك، في حال استخدام الرمز أعلاه فقط، لن تتمكّن من التمييز بين الطلبات التي تمت إعادة محاولة إجرائها والطلبات التي تم إجراؤها بنجاح في المحاولة الأولى. يعني ذلك ستتلقى جميع بيانات التفاعل من المستخدمين دون اتصال بالإنترنت، ولكنك لن سيتمكن من معرفة التفاعلات التي حدثت عندما كان المستخدم غير متصل بالإنترنت.

لحلّ هذه المشكلة، يمكنك استخدام أحد خيارات الضبط. الموضحة أدناه لتعديل أو إضافة تعليقات توضيحية إلى البيانات التي يتم إرسالها في تمت إعادة محاولة معالجة الطلب.

تعديل البيانات التي يتم إرسالها

إذا كنت ترغب في أن تكون قادرًا على التمييز بين الطلبات التي تمت إعادة معالجتها وتلك التي لم تتم إعادة توجيهها يمكنك تحديد إما parameterOverrides أو hitFilter خيارات التهيئة.

تتيح لك هذه الخيارات تعديل مَعلمات Measurement Protocol التي يتم إرسالها في طلب إعادة المحاولة. يجب استخدام الخيار parameterOverrides عند الرغبة في ضبط القيمة نفسها لمَعلمة معيّنة لكل طلب تتم إعادة محاولة إرساله. يجب استخدام الخيار hitFilter. في الحالات التي يلزم فيها حساب قيمة معلمة معينة وقت التشغيل أو المستمدة من قيمة معلَمة أخرى.

توضِّح الأمثلة أدناه كيفية استخدام كلا الخيارَين.

أمثلة

استخدام سمة مخصّصة لتتبُّع التفاعلات على الإنترنت مقارنةً بالتفاعلات بلا إنترنت

لا تتضمّن "إحصاءات Google" سمة مدمجة للتفاعلات على الإنترنت مقارنةً بالتفاعلات بلا إنترنت. ومع ذلك، يمكنك إنشاء سمة خاصة بك لهذا الغرض بالضبط باستخدام ميزة تُعرف باسم السمات المخصّصة.

لتتبُّع الطلبات التي أعادها عامل الخدمة باستخدام واجهة برمجة تطبيقات مخصَّصة مع Workbox Google Analytics، اتبع الخطوات التالية:

  1. أنشئ سمة مخصّصة جديدة في "إحصاءات Google". أدخِل اسمًا، مثل "حالة الشبكة". وتعيين النطاق إلى "النتيجة" (لأنّ أي تفاعل يمكن أن يكون بلا اتصال بالإنترنت).
  2. دوِّن الفهرس الذي تم تعيينه للبُعد الذي تم إنشاؤه حديثًا واجتيازه أنه كاسم المعلمة لخيار الإعداد parameterOverrides في رمز "إحصاءات Google" في Workbox

    على سبيل المثال، إذا كانت هذه هي السمة المخصّصة الأولى لك، سيكون فهرسها 1، وسيكون اسم المعلمة cd1 (إذا كان الفهرس هو 8، فسيتم cd8):

    import * as googleAnalytics from 'workbox-google-analytics';
    
    googleAnalytics.initialize({
      parameterOverrides: {
        cd1: 'offline',
      },
    });
    
  3. (اختياري) بما أنّ القيم في parameterOverrides لا يتم تطبيقها إلا على الطلبات التي تمت إعادة محاولة إجرائها ("غير متاحة على الإنترنت")، قد تحتاج أيضًا إلى ضبط قيمة تلقائية "متوفّرة على الإنترنت" لجميع الطلبات الأخرى. في حين أن هذا ليس ضروريًا للغاية، سيسهّل قراءة التقارير.

    على سبيل المثال، إذا كنت قد استخدمت المقتطف التلقائي للتتبّع analytics.js لتثبيت "إحصاءات Google"، يمكنك إضافة السطر 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:

  1. إنشاء مقياس مخصّص جديد في "إحصاءات Google" امنحه اسمًا مثل "وقت الانتظار في وضع عدم الاتصال" وعيِّن النطاق إلى "النتيجة"، واضبط نوع التنسيق على "الوقت" (بالثواني).
  2. استخدِم الخيار 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"

بما أنّ خدمة Workbox في "إحصاءات Google" تستخدم ميزة "مزامنة الخلفية" لإعادة تشغيل الأحداث، يمكنها أن غير بديهية في الاختبار. قراءة المزيد على اختبار مزامنة خلفية صندوق العمل:

الأنواع

GoogleAnalyticsInitializeOptions

أماكن إقامة

  • cacheName

    سلسلة اختيارية

  • parameterOverrides

    الكائن اختياري

  • hitFilter

    null اختياري

    تبدو الدالة hitFilter على النحو التالي:

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

    • params

      URLSearchParams

الطُرق

initialize()

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

المعلمات