Важно!
Эта интеграция работает с приложениями iOS и Android, в которых уже реализован SDK Google Analytics для Firebase. Для успешной интеграции SDK AppsFlyer должен собирать значение app_instance_id из SDK Firebase. См. инструкцию о том, как извлечь идентификатор экземпляра приложения из SDK Firebase.
Как это работает?
-
Когда происходит новая установка, AppsFlyer отправляет в GA4 детали точки касания – медиаисточник, название кампании и идентификатор кампании. Также отправляется
app_instance_idот SDK Firebase, чтобы обеспечить запись точки касания в GA4 для этого пользователя. - Когда происходит внутреннее событие приложения, GA4 будет атрибутировать событие к последней точке касания.
Настройка интеграции с Google Analytics (GA4)
Настроить интеграцию с Google Analytics (GA4) с помощью инструкции ниже.
1. На Маркетплейсе партнёров выберите Google Analytics (GA4).
Необходимые условия: Перед настройкой интеграции обязательно свяжитесь с партнёром и откройте у него аккаунт.
Чтобы активировать или изменить интеграцию:
- Чтобы активировать: В AppsFlyer в боковом меню выберите Сотрудничество> Маркетплейс партнёров. Чтобы изменить: В AppsFlyer в боковом меню выберите Сотрудничество> Активные интеграции.
- Найдите Google Аналитику (GA4) и выберите её.
- Нажмите Настроить интеграцию. Вы будете перенаправлены на страницу настройки интеграции.
Конфигурация Google Аналитики включает в себя только вкладку Интеграция.
Подробное описание заголовка окна «Partner Configuration» (Настройки партнёра) см. здесь.
2. Настройте интеграцию GA4 в AppsFlyer.
Настройте следующие параметры:
-
На вкладке Интеграция выберите приложение для интеграции и нажмите Активировать партнёра.
Примечание: статус этого переключателя должен быть (activated)/(включён) всё время, пока вы работаете с этим партнёром.
Дополнительная информация по активации партнёров доступна здесь.
- В идентификаторе приложения Firebase введите идентификатор приложения Firebase. Чтобы узнать, как найти идентификатор приложения Firebase, см. документацию Firebase.
- В строке API Secret введите API Secret (API секрет) для аутентификации постбэков в Google Аналитике. API Secret генерируется через пользовательский интерфейс Google Аналитики. Чтобы просмотреть, отредактировать или создать API секрет, следуйте инструкциям в документации Google. Когда вас попросят выбрать поток веб-данных, выберите поток данных для Android или iOS.
- Включите Идентификатор пользователя клиента, чтобы отправлять идентификатор пользователя клиента (CUID) вместо рекламного идентификатора (IDFA).
-
В разделе Постбэки по умолчанию, в разделе для пользователей из, выберите Все медиаисточники, включая органические.
Примечание
Постбэк установки включает только детали точки касания (медиаисточник, название кампании и идентификатор кампании).
3. Постбэки по внутренним событиям приложений.
На вкладке Интеграция сопоставьте события в приложении AppsFlyer с событиями Google Аналитики (GA4), отправляемыми через постбэки.
Примечание
- Постбэки для мобильных событий в приложении, отправленные через S2S, не поддерживаются.
- GA4 не удаляет дубликаты событий, отправленных из SDK Firebase и AppsFlyer. Поэтому мы рекомендуем настраивать постбэки внутренних событий приложений только для событий, которые уже не отправляются в GA4 через SDK Firebase.
- Активируйте Постбэки по внутренним событиям приложения.
-
Чтобы добавить в список событие, определенное в SDK, нажмите Добавить событие. В таблице ниже описаны поля, которые необходимо заполнить:
Имя параметра Описание Событие AppsFlyer Название события, полученное от SDK AppsFlyer, интегрированного в ваше приложение.
Совет: Не нашли здесь нужное событие?
- Убедитесь, что событие активировано на устройстве с неорганической установкой, и повторите поиск.
- Введите его в поле Событие AppsFlyer и нажмите Добавить другое.
Подробнее о сопоставлении пользовательских событий читайте здесь.
сопоставлено с событием партнёра Уникальное имя или идентификатор каждого события, определённые партнёром. Возможны следующие настройки сопоставления:
- Текстовое поле: Получите соответствующий идентификатор события от партнёра.
- Раскрывающийся список: Выберите наиболее подходящее предопределённое событие AppsFlyer.
- Как есть: События отправляются в исходном виде, без сопоставления названий.
для пользователей от Выберите вариант отправки для события:
- Все медиа-источники и органический трафик: Отправляйте постбэки для событий, связанных с любым партнёром, а также для органических событий.
включая - Без данных (по умолчанию): Отправлять только само событие без каких-либо значений.
- Значения и доход: отправляются все параметры события, включая значение дохода (если оно есть в событии).
- Значения без дохода: Отправляются все параметры, за исключением значения выручки.
- [Необязательно] Нажмите на значок (
) Добавить условие, чтобы задать условия для события.
- Нажмите Сохранить интеграцию.
- Отправьте сопоставление постбэка события.
4. Отправьте сопоставление события постбэка своему разработчику.
После того как вы настроили сопоставление событий в приложении, отправьте вашему разработчику таблицу, где каждое сопоставленное событие соответствует строке с следующими столбцами.
- Событие AF (AF event): название события AppsFlyer.
-
Сопоставлено с событием Google (Mapped to Google event): название события в Google Аналитике.
Важно!
Не используйте зарезервированные события Google в качестве названий для пользовательских событий Google Аналитики.
-
Параметры события AF (AF event parameters) [ОБЯЗАТЕЛЬНО]: Предопределённые параметры событий AppsFlyer, которые должны быть включены в постбэк события, отправляемого в Google Аналитику.
Важно!
Обязательно включайте все предопределённые параметры событий AF в определение события в таком же виде, как они указаны в таблице. Несоблюдение этого требования приведёт к отклонению постбэка Google Аналитика.
Таблица сопоставления событий
Следующая таблица включает в себя все события Google Аналитики и их предопределённые параметры AppsFlyer. Отправьте своему разработчику таблицу, содержащую только те события, которые вы сопоставили.
Зарезервированные названия событий Google
Следующие названия событий зарезервированы и не могут использоваться в качестве пользовательских названий событий:
ad_activeviewad_clickad_exposuread_queryad_rewardadunit_exposureapp_clear_dataapp_exceptionapp_installapp_removeapp_store_refundapp_updateapp_upgradedynamic_link_app_opendynamic_link_app_updatedynamic_link_first_openerrorfirebase_campaignfirebase_in_app_message_actionfirebase_in_app_message_dismissfirebase_in_app_message_impressionfirst_openfirst_visitin_app_purchasenotification_dismissnotification_foregroundnotification_opennotification_receivenotification_sendos_updatesession_startuser_engagement
5. Получите идентификатор экземпляра приложения в SDK AppsFlyer
Идентификатор экземпляра приложения уникально идентифицирует конкретную установку приложения Firebase. SDK получает это значение из SDK Firebase.
Ваш разработчик реализует код для:
- сбора данных поля
app_instance_idиз Firebase. - вызова
setAdditionalDataперед первым запуском, для включения идентификатора приложения иga_session_id(если используется) в установки, сессии и внутренние события приложения.
Важно!
setAdditionalData (Android / Unity / React Native) и customData (iOS) принимают отображение пар ключ-значение. Если ваше приложение отправляет как app_instance_id, так и ga_session_id (см. шаг 6), отправьте их вместе в одном отображении, чтобы оба значения были включены. Если вы отправите их в отдельных setAdditionalData вызовах, более поздний вызов перезапишет более ранний.
Kotlin
FirebaseAnalytics.getInstance(this).appInstanceId.addOnCompleteListener { task ->
if (task.isSuccessful) {
AppsFlyerLib.getInstance().setAdditionalData("app_instance_id", task.result)
}
}
Java
FirebaseAnalytics.getInstance(this).getAppInstanceId().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
AppsFlyerLib.getInstance().setAdditionalData("app_instance_id", task.getResult());
}
});
Справочник API: setAdditionalData
Нативный iOS
let appInstanceId = Analytics.appInstanceID()
AppsFlyerLib.shared().customData = ["app_instance_id": appInstanceId]
Objective C
(void) fetchAnalyticsInstanceId {
NSString *instanceID = [FIRAnalytics appInstanceID];
[[AppsFlyerLib shared] setAdditionalData:@{@"app_instance_id": instanceID}];
}
Справочник API: customData
using Firebase.Analytics;
public class AnalyticsManager : MonoBehaviour
{
private async void Start()
{
AppsFlyer.initSDK(devKey, appID, this);
string appInstanceId = await FirebaseAnalytics.GetAnalyticsInstanceIdAsync();
Dictionary <string, string> customData = new Dictionary<string, string>();
customData.Add("app_instance_id", appInstanceId);
AppsFlyer.setAdditionalData(appInstanceId);
AppsFlyer.startSDK();
}
}
Справочник API: setAdditionalData
Справочник API: setAdditionalData
6. Получите идентификатор сессии GA4 в SDK AppsFlyer.
ga_session_id уникально идентифицирует сессию в приложении Firebase. Это значение должно быть получено из SDK Firebase и отправлено в GA4 с использованием API setAdditionalData.
Ваш разработчик реализует код для:
- сбора данных поля
ga_session_idиз Firebase. - Вызовите
setAdditionalDataперед первым запуском для включения идентификатора сессии (иapp_instance_id, если используется). - Используйте ключ
ga_session_idпри вызове API.
Важно!
setAdditionalData (Android / Unity / React Native) и customData (iOS) принимают отображение пар ключ-значение. Если ваше приложение отправляет как app_instance_id, так и ga_session_id (см. шаг 5), отправьте их вместе в одном отображении, чтобы оба значения были включены. Если вы отправите их в отдельных setAdditionalData вызовах, более поздний вызов перезапишет более ранний.
Kotlin
FirebaseAnalytics.getInstance(this).sessionId.addOnCompleteListener { task ->
if (task.isSuccessful) {
AppsFlyerLib.getInstance().setAdditionalData("ga_session_id", task.result)
}
}
Java
FirebaseAnalytics.getInstance(this).getSessionId().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
AppsFlyerLib.getInstance().setAdditionalData("ga_session_id", task.getResult());
}
});
Справочник API: setAdditionalData
Swift
if #available(iOS 14.0, *) {
Analytics.sessionID { sessionID, error in
if let sessionID = sessionID {
AppsFlyerLib.shared().customData = ["ga_session_id": sessionID]
}
}
}
Objective-C
- (void)fetchAnalyticsSessionId {
if (@available(iOS 14.0, *)) {
[FIRAnalytics sessionIDWithCompletion:^(NSString * _Nullable sessionID, NSError * _Nullable error) {
if (sessionID) {
[[AppsFlyerLib shared] setAdditionalData:@{@"ga_session_id": sessionID}];
}
}];
}
}
Справочник API: customData
using Firebase.Analytics;
using System.Threading.Tasks;
using AppsFlyerSDK;
using UnityEngine;
using System.Collections.Generic;
public class AnalyticsManager : MonoBehaviour
{
private async void Start()
{
AppsFlyer.initSDK("yourDevKey", "yourAppID", this);
// Get session ID
string sessionId = await FirebaseAnalytics.GetSessionIdAsync();
Dictionary<string, string> customData = new Dictionary<string, string>();
customData.Add("ga_session_id", sessionId);
AppsFlyer.setAdditionalData(customData);
AppsFlyer.startSDK();
}
}
Справочник API: setAdditionalData
7. Выполните валидацию интеграции GA4
Убедитесь, что события в постбэках, которые вы отправляете в GA4, зарегистрированы и прочитаны Google аналитикой. Существует два метода, которые рекламодатели могут использовать для просмотра своих данных:
- Используя GA4 Исследования, вы можете исследовать сырые данные событий со всеми связанными параметрами. Необходимые условия: в вашем ресурсе должен быть настроен экспорт Big Query.
-
Отчёт о событиях позволяет рекламодателям просматривать свои события с постбэками. Отчёт можно найти в одной или нескольких коллекциях отчётов.
Например, Отчёты о событиях можно найти в коллекциях Жизненный цикл или Отчётность по играм в разделе Вовлеченность > События.
Для получения дополнительной информации об отчёте о событиях см. документацию Google. -
Отчёт о привлечении трафика помогает вам понять, откуда приходят ваши посетители сайта и приложения.
В разделе Коллекция жизненного цикла перейдите в Привлечение > Привлечение трафика).
Для получения дополнительной информации об отчёте о привлечении трафика см. документацию Google.