اختَر المنصة التي تستخدمها:
لا يعرض Measurement Protocol في "إحصاءات Google" رموز الخطأ HTTP، حتى إذا كان الحدث منسقًا بشكل غير صحيح أو يفتقر إلى مَعلمات مطلوبة. للتأكّد من أنّ الأحداث صالحة، يجب اختبارها باستخدام خادم التحقق من بنية الأحداث في Measurement Protocol قبل تفعيل مرحلة الإنتاج.
بعد التأكّد من أنّ أحداثك منظَّمة بشكلٍ سليم، عليك التحقّق من صحة عملية التنفيذ للتأكّد من أنّك تستخدم المفاتيح الصحيحة.
يمكنك إما استدعاء خادم التحقق من بنية الأحداث مباشرةً أو استخدام أداة إنشاء الأحداث في "إحصاءات Google". يتيح لك "منشئ الأحداث" في "إحصاءات Google" إنشاء الأحداث بشكل تفاعلي، ويستخدم خادم التحقق من بنية الأحداث للتحقّق من صحتها.
يوضّح هذا الدليل كيفية إرسال الأحداث إلى خادم التحقق من بنية الأحداث في Measurement Protocol لخدمة "إحصاءات Google" وكيفية تفسير الردّ.
إرسال الأحداث للتحقّق من صحتها
الفرق الوحيد في طلب الأحداث المُرسَلة إلى Measurement Protocol وخادم التحقق من بنية الأحداث في Measurement Protocol هو عنوان URL.
| الخادم | عنوان URL |
|---|---|
| Measurement Protocol | /mp/collect |
| خادم التحقق من بنية الأحداث في Measurement Protocol | /debug/mp/collect |
تتشابه جميع حقول الطلب الأخرى.
ننصحك باتّباع الأسلوب التالي للتحقّق من الصحة:
- استخدِم عمليات تحقّق صارمة من صحة البيانات أثناء التطوير باستخدام أحد الخيارَين التاليَين:
- التحقّق من صحة الطلبات باستخدام أداة إنشاء الأحداث
- أرسِل الطلبات إلى خادم التحقّق من بنية الأحداث مع ضبط
validation_behaviorعلىENFORCE_RECOMMENDATIONS.
- في مرحلة الإنتاج، أرسِل الطلبات بدون ضبط
validation_behaviorللحدّ من البيانات التي يرفضها Measurement Protocol.
مثال على حدث غير صالح
يعرض الرمز التالي حدثًا غير صالح يتم إرساله إلى خادم التحقق من بنية الأحداث في Measurement Protocol:
const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";
fetch(`https://www.google-analytics.com/debug/mp/collect?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
app_instance_id: "APP_INSTANCE_ID",
validation_behavior: "ENFORCE_RECOMMENDATIONS",
events: [{
// Event names must start with an alphabetic character.
name: "_badEventName",
params: {},
}]
})
});
مثال على حدث صالح
يعرض الرمز التالي حدثًا صالحًا يتم إرساله إلى خادم التحقق من بنية الأحداث في Measurement Protocol. سيؤدي هذا الطلب إلى عرض مصفوفة validationMessages فارغة في الردّ، كما هو موضّح في قسم ردّ التحقّق من الصحة.
const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";
fetch(`https://www.google-analytics.com/debug/mp/collect?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
app_instance_id: "APP_INSTANCE_ID",
validation_behavior: "ENFORCE_RECOMMENDATIONS",
events: [{
name: "level_up",
params: {
level: 2,
character: "MyHero"
},
}]
})
});
ردّ التحقّق
في ما يلي استجابة خادم التحقق من بنية الأحداث لمثال الحدث غير الصالح.
{
"validationMessages": [
{
"fieldPath": "events",
"description": "Event at index: [0] has invalid name [_badEventName]. Names must start with an alphabetic character.",
"validationCode": "NAME_INVALID"
}
]
}
في ما يلي استجابة خادم التحقق من بنية الأحداث لطلب لا يتضمّن أي مشاكل في التحقّق:
{
"validationMessages": []
}
الردّ
| المفتاح | النوع | الوصف |
|---|---|---|
validationMessages |
Array<ValidationMessage> | مصفوفة من رسائل التحقّق. |
ValidationMessage
| المفتاح | النوع | الوصف |
|---|---|---|
fieldPath |
سلسلة | مسار الحقل الذي كان غير صالح. |
description |
سلسلة | تمثّل هذه السمة وصفًا للخطأ. |
validationCode |
ValidationCode | رمز التحقّق الذي يتوافق مع الخطأ |
ValidationCode
| القيمة | الوصف |
|---|---|
VALUE_INVALID |
القيمة المقدَّمة لـ fieldPath غير صالحة. اطّلِع على القيود.
|
VALUE_REQUIRED |
لم يتم تقديم قيمة مطلوبة لـ fieldPath. |
NAME_INVALID |
الاسم المقدَّم غير صالح. اطّلِع على القيود. |
NAME_RESERVED |
الاسم المقدَّم هو أحد الأسماء المحجوزة. اطّلِع على الأسماء المحجوزة. |
VALUE_OUT_OF_BOUNDS |
القيمة المقدَّمة كبيرة جدًا. اطّلِع على القيود. |
EXCEEDED_MAX_ENTITIES |
كان هناك عدد كبير جدًا من المَعلمات في الطلب. اطّلِع على القيود. |
NAME_DUPLICATED |
تم تقديم الاسم نفسه أكثر من مرة في الطلب. |