Свойства пользователей описывают сегменты вашей пользовательской базы, такие как языковые предпочтения или географическое местоположение. Аналитика автоматически регистрирует некоторые свойства пользователей . Если вы хотите собирать дополнительные свойства, вы можете настроить до 25 дополнительных свойств пользователей для каждого проекта. См. раздел «Настраиваемые свойства пользователей» , чтобы узнать, как устанавливать и регистрировать свойства пользователей.
Свойства пользователей улучшают сегментацию пользователей, но данные о свойствах пользователей часто доступны только на стороне сервера. Протокол измерений позволяет дополнить измерения на стороне клиента данными на стороне сервера, что обычно невозможно при использовании только клиентских решений.
Зарезервированные имена
Некоторые имена пользовательских свойств зарезервированы и не могут использоваться в измерениях:
-
first_open_time -
first_visit_time -
last_deep_link_referrer -
user_id -
first_open_after_install
Кроме того, названия свойств пользователя не могут начинаться со следующих символов:
-
google_ -
ga_ -
firebase_
Пример использования
В следующем примере ваша CRM-система имеет свойство пользователя ( customer_tier ), которое вы хотите добавить в свои измерения. Значение customer_tier может быть одним из вариантов: premium или standard . Чтобы получить это свойство пользователя в своих отчетах, выполните следующие действия:
Во-первых, попросите клиента отправить событие add_payment_info вместе с вызовом серверного API, имеющего доступ к вашей CRM-системе:
клиентский код
FirebaseAnalytics.logEvent("add_payment_info")
ServerAPI.addCustomerTier(
FirebaseAnalytics.getAppInstanceId(),
"[{name: \"add_payment_info\"}"]
);
Затем ваш сервер дополняет данные измерения свойством пользователя customer_tier , используя протокол измерения:
серверный код
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, см. в разделе « Отправка событий» .
Переопределить метку времени
Протокол измерения использует первую найденную в следующем списке метку времени для каждого свойства пользователя в запросе:
-
timestamp_microsзаписи вuser_properties. -
timestamp_microsзапроса. - Время получения запроса протоколом измерения.
В следующем примере отправляется метка времени уровня запроса, которая применяется ко всем свойствам пользователя в запросе. В результате протокол измерения присваивает свойствам пользователя 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
}
}