Wybierz platformę:
Protokół Measurement Protocol w Google Analytics nie zwraca kodów błędów, nawet jeśli zdarzenie jest zniekształcone lub brakuje w nim wymaganych parametrów.HTTP Aby się upewnić, że zdarzenia są prawidłowe, przetestuj je za pomocą serwera weryfikacyjnego Measurement Protocol, zanim je wdrożysz w środowisku produkcyjnym.
Po sprawdzeniu, czy zdarzenia są prawidłowo skonstruowane, zweryfikuj implementację, aby upewnić się, że używasz prawidłowych kluczy.
Możesz wywołać serwer walidacji bezpośrednio lub użyć narzędzia Event Builder Google Analytics. Narzędzie Event Builder w Google Analytics umożliwia interaktywne tworzenie zdarzeń i korzysta z serwera walidacji platformy Measurement Protocol do ich sprawdzania.
Z tego przewodnika dowiesz się, jak wysyłać zdarzenia do serwera weryfikacji Measurement Protocol w Google Analytics 4 i interpretować odpowiedź.
Wysyłanie zdarzeń do weryfikacji
Jedyna różnica między żądaniem zdarzeń wysyłanych do Measurement Protocol a żądaniem wysyłanym do serwera weryfikacyjnego Measurement Protocol to adres URL.
| Serwer | URL |
|---|---|
| Measurement Protocol | /mp/collect |
| Serwer weryfikacyjny Measurement Protocol | /debug/mp/collect |
Wszystkie pozostałe pola żądania są takie same.
Zalecamy następujące podejście do weryfikacji:
- Podczas tworzenia aplikacji używaj ścisłych kontroli poprawności, korzystając z jednej z tych opcji:
- Weryfikuj żądania za pomocą narzędzia do tworzenia zdarzeń.
- Wysyłaj żądania do serwera weryfikacji z parametrem
validation_behaviorustawionym naENFORCE_RECOMMENDATIONS.
- W środowisku produkcyjnym wysyłaj żądania bez parametru
validation_behavior, aby zminimalizować ilość danych odrzucanych przez Measurement Protocol.
Przykład nieprawidłowego zdarzenia
Poniższy kod pokazuje, jak wysłać nieprawidłowe zdarzenie do serwera weryfikacji 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: {},
}]
})
});
Przykład prawidłowego zdarzenia
Poniższy kod pokazuje prawidłowe zdarzenie wysyłane do serwera weryfikacji Measurement Protocol. W odpowiedzi na to żądanie otrzymasz pustą tablicę validationMessages, co pokazano w sekcji Odpowiedź weryfikacyjna.
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"
},
}]
})
});
Odpowiedź na weryfikację
Oto odpowiedź serwera weryfikacyjnego na przykład nieprawidłowego zdarzenia.
{
"validationMessages": [
{
"fieldPath": "events",
"description": "Event at index: [0] has invalid name [_badEventName]. Names must start with an alphabetic character.",
"validationCode": "NAME_INVALID"
}
]
}
Oto odpowiedź serwera weryfikacyjnego na żądanie, w którym nie ma problemów z weryfikacją:
{
"validationMessages": []
}
Odpowiedź
| Klucz | Typ | Opis |
|---|---|---|
validationMessages |
Array<ValidationMessage> | Tablica komunikatów weryfikacyjnych. |
ValidationMessage
| Klucz | Typ | Opis |
|---|---|---|
fieldPath |
ciąg znaków | Ścieżka do nieprawidłowego pola. |
description |
ciąg znaków | Opis błędu. |
validationCode |
ValidationCode | Kod weryfikacyjny odpowiadający błędowi. |
ValidationCode
| Wartość | Opis |
|---|---|
VALUE_INVALID |
Podana wartość parametru fieldPath jest nieprawidłowa. Zobacz ograniczenia.
|
VALUE_REQUIRED |
Nie podano wymaganej wartości atrybutu fieldPath. |
NAME_INVALID |
Podana nazwa jest nieprawidłowa. Zobacz ograniczenia. |
NAME_RESERVED |
Podana nazwa jest jedną z nazw zarezerwowanych. Zobacz zarezerwowane nazwy. |
VALUE_OUT_OF_BOUNDS |
Podana wartość była za duża. Zobacz ograniczenia. |
EXCEEDED_MAX_ENTITIES |
Żądanie zawierało zbyt wiele parametrów. Zobacz ograniczenia. |
NAME_DUPLICATED |
Ta sama nazwa została podana w żądaniu więcej niż raz. |