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

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

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

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

Далее описано, как отправлять события на сервер валидации Measurement Protocol для Google Аналитики и интерпретировать ответ сервера.

Отправка событий на сервер валидации

Запросы для отправки событий на саму платформу 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 Массив <ValidationMessage> Массив сообщений от сервера валидации.

ValidationMessage

Ключ Тип Описание
fieldPath string Путь к недействительному полю.
description string Описание ошибки.
validationCode ValidationCode Код ошибки.

ValidationCode

Значение Описание
VALUE_INVALID Недействительное значение параметра fieldPath. См. ограничения.
VALUE_REQUIRED Не указано значение обязательного параметра fieldPath.
NAME_INVALID Недействительное название. См. ограничения.
NAME_RESERVED Указано название из списка зарезервированных.
VALUE_OUT_OF_BOUNDS Превышена максимальная длина значения. См. ограничения.
EXCEEDED_MAX_ENTITIES Превышено максимальное количество параметров. См. ограничения.
NAME_DUPLICATED Название встречается в запросе более одного раза.