Как проверить события

Выберите свою платформу:

Протокол измерения Google Analytics не возвращает коды ошибок HTTP , даже если событие имеет некорректный формат или отсутствуют необходимые параметры. Чтобы убедиться в корректности ваших событий, перед развертыванием в рабочей среде следует протестировать их на сервере проверки протокола измерения. После проверки правильности структуры событий следует проверить реализацию , чтобы убедиться в использовании правильных ключей.

Вы можете либо напрямую обратиться к серверу проверки, либо использовать конструктор событий Google Analytics . Конструктор событий Google Analytics позволяет интерактивно создавать события и использует сервер проверки Measurement Protocol для их проверки.

В этом руководстве описано, как отправлять события на сервер проверки Measurement Protocol for Google Analytics 4 и интерпретировать ответ.

Отправка событий на проверку

Единственное различие между запросами на события, отправляемыми в протокол измерения и на сервер проверки протокола измерения, заключается в URL-адресе.

Сервер URL
Протокол измерений /mp/collect
Сервер проверки протокола измерений / debug /mp/collect

Все остальные поля запроса остаются без изменений.

Мы рекомендуем следующий подход к валидации:

  • В процессе разработки используйте строгие проверки достоверности данных, выбрав один из следующих вариантов:
    • Проверяйте запросы с помощью конструктора событий .
    • Отправляйте запросы на сервер валидации, установив validation_behavior в значение ENFORCE_RECOMMENDATIONS .
  • В производственной среде отправляйте запросы без параметра validation_behavior , чтобы свести к минимуму количество данных, отклоняемых протоколом 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 Одно и то же имя было указано в запросе более одного раза.