اختَر منصّتك:
لا يعرض Measurement Protocol في "إحصاءات Google" رموز خطأ HTTP، حتى إذا كان الحدث منسّقًا بشكل غير صحيح أو يفتقر إلى مَعلمات مطلوبة. للتأكّد من أنّ الأحداث صالحة، يجب اختبارها باستخدام خادم التحقّق من الصلاحية في Measurement Protocol قبل تفعيل مرحلة الإنتاج.
بعد التأكّد من أنّ الأحداث منظّمة بشكلٍ سليم، يجب
التحقّق من عملية التنفيذ للتأكّد من استخدام المفاتيح الصحيحة.
يمكنك إما استدعاء خادم التحقّق من الصلاحية مباشرةً أو استخدام أداة إنشاء الأحداث في "إحصاءات Google". تسمح لك أداة إنشاء الأحداث في "إحصاءات Google" بإنشاء الأحداث بشكلٍ تفاعلي، وتستخدم خادم التحقّق من الصلاحية في Measurement Protocol للتحقّق من صحتها.
يوضّح هذا الدليل كيفية إرسال الأحداث إلى خادم التحقّق من الصلاحية في Measurement Protocol على "إحصاءات Google 4" وتفسير الردّ.
إرسال الأحداث للتحقّق من صحتها
الفرق الوحيد في طلب الأحداث المُرسَلة إلى 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 |
تم تقديم الاسم نفسه أكثر من مرة في الطلب. |