Wyślij właściwości użytkownika

Właściwości użytkownika opisują segmenty Twoich użytkowników, np. ich ustawienia języka lub położenie geograficzne. Analytics automatycznie rejestruje niektóre właściwości użytkownika. Jeśli chcesz zbierać dodatkowe właściwości, możesz skonfigurować do 25 dodatkowych właściwości użytkownika na projekt. Więcej informacji o tym, jak ustawiać i rejestrować właściwości użytkownika, znajdziesz w artykule Właściwości użytkownika.

Właściwości użytkownika ułatwiają segmentację użytkowników, ale dane o właściwościach użytkownika są często dostępne tylko po stronie serwera. Measurement Protocol umożliwia rozszerzanie pomiarów po stronie klienta o dane po stronie serwera, co jest zwykle niemożliwe przy użyciu tylko rozwiązań po stronie klienta.

Nazwy zarezerwowane

Niektóre nazwy właściwości użytkownika są zarezerwowane i nie można ich używać w pomiarach:

  • first_open_time
  • first_visit_time
  • last_deep_link_referrer
  • user_id
  • first_open_after_install

Oprócz tego nazwy właściwości użytkownika nie mogą się zaczynać od:

  • google_
  • ga_
  • firebase_

Przykład użycia

W tym przykładzie Twój system CRM ma właściwość użytkownika (customer_tier), którą chcesz dodać do pomiarów. Właściwość customer_tier może mieć wartość premium lub standard. Aby uzyskać tę właściwość użytkownika w raportach, wykonaj te czynności:

Najpierw poproś klienta o wysłanie zdarzenia add_payment_info wraz z wywołaniem interfejsu API serwera, który ma dostęp do Twojego systemu CRM:

kod klienta

FirebaseAnalytics.logEvent("add_payment_info")
ServerAPI.addCustomerTier(
  FirebaseAnalytics.getAppInstanceId(),
  "[{name: \"add_payment_info\"}"]
);

Następnie serwer rozszerza pomiar o właściwość użytkownika customer_tier za pomocą Measurement Protocol:

kod serwera

const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";

function addCustomerTier(appInstanceId, events) {

  // Request the customer tier from the CRM.
  const customerTier = getCustomerTier(appInstanceId);

  const queryParams = `?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`;
  fetch(`https://www.google-analytics.com/mp/collect${queryParams}`, {
    method: "POST",
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      "app_instance_id": "APP_INSTANCE_ID",
      "user_properties": {
        "customer_tier": {
          "value": "CUSTOMER_TIER"
        }
      },
      "events": JSON.parse(events)
    })
  });
}

Ta właściwość użytkownika raportuje 2 segmenty: premium i standard.

Szczegółowe informacje o tym, jak wysyłać zdarzenia za pomocą Measurement Protocol, znajdziesz w artykule Wysyłanie zdarzeń.

Zastąpienie sygnatury czasowej

Measurement Protocol używa pierwszej sygnatury czasowej, którą znajdzie na tej liście, w przypadku każdej właściwości użytkownika w żądaniu:

  1. timestamp_micros wpisu w user_properties.
  2. timestamp_micros żądania.
  3. Czas, w którym Measurement Protocol otrzyma żądanie.

Ten przykład wysyła sygnaturę czasową na poziomie żądania, która ma zastosowanie do wszystkich właściwości użytkownika w żądaniu. W rezultacie Measurement Protocol przypisuje właściwościom użytkownika customer_tier i customer_group sygnaturę czasową requestUnixEpochTimeInMicros.

{
  "timestamp_micros": requestUnixEpochTimeInMicros,
  "user_properties": {
      "customer_tier": {
        "value": customerTierValue
      },
      "customer_group": {
        "value": customerGroupValue
      }
  }
}

Ten przykład wysyła zarówno sygnaturę czasową na poziomie żądania, jak i sygnaturę czasową właściwości użytkownika customer_tier. W rezultacie Measurement Protocol przypisuje właściwości customer_tier sygnaturę czasową customerTierUnixEpochTimeInMicros, a właściwości customer_group sygnaturę czasową requestUnixEpochTimeInMicros.

"timestamp_micros": requestUnixEpochTimeInMicros,
"user_properties": {
    "customer_tier": {
      "value": customerTierValue,
      "timestamp_micros": customerTierUnixEpochTimeInMicros
    },
    "customer_group": {
      "value": customerGroupValue
    }
}