Свойства пользователей описывают сегменты пользовательской базы, такие как языковые настройки или географическое местоположение. Аналитика автоматически регистрирует некоторые свойства пользователей. Если вам нужны дополнительные сведения, можно добавлять до 25 свойств пользователей на проект. Подробнее…
Свойства пользователей улучшают сегментацию пользователей, но данные о свойствах пользователей часто доступны только на стороне сервера. Measurement Protocol позволяет дополнять данные, собранные на стороне клиента, данными, собранными на стороне сервера. Обычно это невозможно сделать, используя только клиентские решения.
Зарезервированные названия
Эти названия свойств пользователей зарезервированы, и вы не можете их использовать:
first_open_timefirst_visit_timelast_deep_link_referreruser_idfirst_open_after_install
Также названия свойств пользователей не могут начинаться с таких префиксов:
google_ga_firebase_
Пример использования
Допустим, у нас есть CRM-система со свойством пользователей customer_tier, у которого может быть два значения: premium и standard. Вы хотите добавить свойство customer_tier в отчеты. Вот как это реализовать.
Сначала клиент должен отправить событие add_payment_info вместе с вызовом API сервера, у которого есть доступ к вашей CRM-системе:
Клиентский код
FirebaseAnalytics.logEvent("add_payment_info")
ServerAPI.addCustomerTier(
FirebaseAnalytics.getAppInstanceId(),
"[{name: \"add_payment_info\"}"]
);
Затем сервер дополняет данные отслеживания свойством пользователя customer_tier с помощью Measurement Protocol:
Серверный код
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)
})
});
}
Эти данные помогут разбить пользовательскую базу на два сегмента: premium и standard.
Подробную информацию о том, как отправлять события с помощью Measurement Protocol, вы найдете в статье Отправка событий.
Переопределить временную метку
Measurement Protocol использует первую временную метку, которую находит в следующем списке для каждого свойства пользователя в запросе:
timestamp_microsзаписи вuser_properties.timestamp_microsзапроса- Время, когда Measurement Protocol получает запрос.
В примере ниже отправляется временная метка на уровне запроса, которая применяется ко всем свойствам пользователя в запросе. В результате Measurement Protocol присваивает свойствам пользователя customer_tier и customer_group временную метку requestUnixEpochTimeInMicros.
{
"timestamp_micros": requestUnixEpochTimeInMicros,
"user_properties": {
"customer_tier": {
"value": customerTierValue
},
"customer_group": {
"value": customerGroupValue
}
}
}
В примере ниже отправляется временная метка на уровне запроса и временная метка для свойства пользователя customer_tier. В результате Measurement Protocol присваивает событию customer_tier временную метку customerTierUnixEpochTimeInMicros, а событию customer_group – временную метку requestUnixEpochTimeInMicros.
"timestamp_micros": requestUnixEpochTimeInMicros,
"user_properties": {
"customer_tier": {
"value": customerTierValue,
"timestamp_micros": customerTierUnixEpochTimeInMicros
},
"customer_group": {
"value": customerGroupValue
}
}