Wybierz platformę:
Serwer Google Analytics Measurement Protocol nie zwraca kodów błędów HTTP nawet wtedy, gdy zdarzenie jest zniekształcone lub brakuje w nim wymaganych parametrów. Aby się upewnić, że zdarzenie jest prawidłowe, przetestuj je za pomocą serwera weryfikacyjnego Measurement Protocol, zanim je wdrożysz w środowisku produkcyjnym.
Gdy sprawdzisz, czy zdarzenia są prawidłowo skonstruowane, powinieneś
zweryfikować implementację, aby mieć pewność, że używasz prawidłowych kluczy.
Możesz wywołać serwer walidacji bezpośrednio lub użyć Google Analytics Event Builder. Narzędzie Event Builder Google Analytics umożliwia interaktywne tworzenie zdarzeń i korzysta z serwera walidacji Measurement Protocol do ich sprawdzania.
Z tego przewodnika dowiesz się, jak wysyłać zdarzenia do serwera weryfikacyjnego Measurement Protocol w Google Analytics i interpretować odpowiedź.
Wysyłanie zdarzeń do weryfikacji
Jedyną różnicą w żądaniu zdarzeń wysyłanych do Measurement Protocol i serwera weryfikacyjnego Measurement Protocol jest adres URL.
| Serwer | URL |
|---|---|
| Measurement Protocol | /mp/collect |
| Serwer weryfikacyjny Measurement Protocol | /debug/mp/collect |
Wszystkie inne pola żądania są takie same.
Do weryfikacji zalecamy stosowanie tej metody:
- Podczas tworzenia aplikacji używaj rygorystycznych kontroli poprawności, korzystając z jednej z tych opcji:
- Sprawdzaj poprawność żądań za pomocą narzędzia Event Builder.
- Wysyłaj żądania do serwera weryfikacyjnego z parametrem
validation_behaviorustawionym naENFORCE_RECOMMENDATIONS.
- W środowisku produkcyjnym wysyłaj żądania bez ustawionego parametru
validation_behavior, aby zminimalizować ilość danych odrzucanych przez Measurement Protocol.
Przykład nieprawidłowego zdarzenia
Poniższy kod pokazuje nieprawidłowe zdarzenie wysyłane do serwera weryfikacyjnego 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 weryfikacyjnego Measurement Protocol. To żądanie spowoduje zwrócenie w odpowiedzi pustej tablicy validationMessages, jak 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ź weryfikacyjna
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 występują problemy z weryfikacją:
{
"validationMessages": []
}
Odpowiedź
| Klucz | Typ | Opis |
|---|---|---|
validationMessages |
Array<ValidationMessage> | Tablica komunikatów weryfikacyjnych. |
ValidationMessage
| Klucz | Typ | Opis |
|---|---|---|
fieldPath |
tekst | Ścieżka do pola, które jest nieprawidłowe. |
description |
tekst | Opis błędu. |
validationCode |
ValidationCode | Kod weryfikacyjny odpowiadający błędowi. |
ValidationCode
| Wartość | Opis |
|---|---|
VALUE_INVALID |
Wartość podana w polu fieldPath jest nieprawidłowa. Zobacz ograniczenia.
|
VALUE_REQUIRED |
Nie podano wymaganej wartości w polu 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ść jest zbyt duża. Zobacz ograniczenia. |
EXCEEDED_MAX_ENTITIES |
Żądanie zawiera zbyt wiele parametrów. Zobacz ograniczenia. |
NAME_DUPLICATED |
W żądaniu podano tę samą nazwę więcej niż raz. |