القياس على جميع النطاقات

يوضّح هذا الدليل كيفية قياس الأحداث على مستوى نطاقات متعددة باستخدام analytics.js.

نظرة عامة

تستخدِم مكتبة analytics.js معرّف عميل فريدًا لتحديد ما إذا كان المستخدم جديدًا أم مكرِّرًا للزيارة. ويتم اعتبار المستخدم مكرِّر الزيارة إذا سبق إرسال نتيجة بمعرّف عميل مطابق إلى الموقع نفسه.

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

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

الحصول على رقم تعريف العميل في النطاق المصدر

لاسترداد رقم تعريف عميل على نطاق المصدر، يمكنك استخدام الإجراء get:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

بعد توفُّر معرِّف العميل في النطاق المصدر، يمكنك إضافته إلى الروابط التي تشير إلى نطاق الوجهة.

<a href="https://destination.com/?clientId=XXXXXX">destination.com</a>

إعداد معرِّف العميل في نطاق الوجهة

يمكنك إعلام عنصر تتبُّع على نطاق الوجهة بمعرّف العميل المراد استخدامه من خلال تحديد حقل معرّف العميل في الأمر create:

ga('create', 'UA-XXXXX-Y', 'auto', {
  'clientId': getClientIdFromUrl()
});

في حال توفُّر رقم تعريف عميل حاليًا في نطاق الوجهة، ستستبدله هذه الطريقة.

رصد مشاركة عناوين URL

هناك مشكلة محتملة في تمرير معرِّف العميل في عنوان URL، وهي أنّ المستخدمين يشاركون عناوين URL ومن الممكن أن يشارك المستخدم عنوان URL يحتوي على معرّف عميل ينتمي إلى شخص آخر.

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

تجاهل الإحالات الذاتية

سيتم إنشاء حملة إحالة جديدة كلما كان مُحيل المستند لإحدى الصفحات من اسم مضيف لا يتطابق مع أي من الإدخالات في قائمة استبعاد الإحالات لموقعك.

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

إطارات iframe

يتطلب الأسلوب المذكور أعلاه رمز JavaScript يتم تشغيله بعد تحميل analytics.js. بما أنّ عناصر <iframe> تتوفّر عادةً على الصفحة قبل تحميل analytics.js، لا يتوفّر في الغالب خيار إلحاق معرِّف العميل بعنوان URL في مَعلمة المصدر لإطار iframe.

لحل هذه المشكلة، يمكنك ضبط الصفحة داخل إطار iframe لتأخير إنشاء أداة التتبُّع إلى أن تتلقّى بيانات معرِّف العميل من الصفحة الرئيسية. وفي الصفحة الرئيسية، يمكنك ضبطها لإرسال معرِّف العميل إلى صفحة إطار iframe باستخدام postMessage.

في ما يلي مثال على رمز الصفحة الرئيسية على source.com:

<iframe id="destination-frame" src="https://destination.com"></iframe>

<script>
ga('create', 'UA-XXXXX-Y', 'auto');
ga(function(tracker) {
  // Gets the client ID of the default tracker.
  var clientId = tracker.get('clientId');

  // Gets a reference to the window object of the destionation iframe.
  var frameWindow = document.getElementById('destination-frame').contentWindow;

  // Sends the client ID to the window inside the destination frame.
  frameWindow.postMessage(clientId, 'https://destination.com');
});
</script>

إليك الرمز الذي سيتلقّى الرسالة في إطار iframe المستضاف على destination.com:

window.addEventListener('message', function(event) {
  // Ignores messages from untrusted domains.
  if (event.origin != 'https://destination.com') return;

  ga('create', 'UA-XXXXX-Y', 'auto', {
    clientId: event.data
  });
});

من المحتمل أن يتعذّر تحميل analytics.js على الصفحة الرئيسية، وبالتالي لن تتلقّى الصفحة في إطار iframe معرّف العميل مطلقًا. تعتمد كيفية تعاملك مع هذه الحالة على مدى أهمية مطابقة أرقام تعريف العملاء.

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

يستخدم الرمز البرمجي التالي مهلة على الصفحة في إطار iframe لمعالجة الحالة التي تكون فيها الصفحة الرئيسية بطيئة أو يتعذّر فيها إرسال معرِّف العميل:

// Stores whether or not the tracker has been created.
var trackerCreated = false;

function createTracker(opt_clientId) {
  if (!trackerCreated) {
    var fields = {};
    if (opt_clientId) {
      fields.clientId = opt_clientId;
    }

    ga('create', 'UA-XXXXX-Y', 'auto', fields);
    trackerCreated = true;
  }
}


window.addEventListener('message', function(event) {
  // Ignores messages from untrusted domains.
  if (event.origin != 'https://destination.com') return;

  // Creates the tracker with the data from the parent page.
  createTracker(event.data);
});


// Waits for three seconds to receive the client ID from the parent page.
// If that doesn't happen, it creates the tracker as normal.
setTimeout(createTracker, 3000);