mParticle — интегрированный партнер AppsFlyer — собирает данные клиентов и отправляет их на различные платформы для аналитики, маркетинга и хранения данных.
Важно!
Некоторые медиа-источники ограничивают передачу данных третьим лицам. Поэтому постбэки для ограниченных событий не будут отправляться этому партнеру, независимо от настроенной отправки постбэков.
Интеграции событий
Этот документ содержит сведения о том, как активировать данные событий из mParticle в AppsFlyer.
1. Клиенты mParticle должны интегрировать набор AppsFlyer Kit в своё приложение. SDK mParticle инициализирует SDK AppsFlyer, а также перенаправляет все необходимые события жизненного цикла в SDK AppsFlyer.
2. Подробнее о том, как настроить AppsFlyer kit с SDK mParticle в вашем приложении, см. в репозиториях GitHub SDK для iOS и Android.
Настройка интеграции событий AppsFlyer
1. На дэшборде mParticle (https://app.mparticle.com) выберите свое Приложение (также называется Workspace)
2. Нажмите Каталог в левом меню навигации.
3. Нажмите плитку AppsFlyer, чтобы открыть сведения об интеграции, включая такие данные, как категории, доступные платформы, минимальные версии SDK mParticle (если есть), типы данных, идентификаторы пользователей, идентификаторы устройств, доступные события и доступные конфигурации.
4. Кликните Добавить AppsFlyer к настройке.
Откроется окно Add to Setup:
5. Выберите тип интеграции Output Event и нажмите <0>Добавить в настройки0>, чтобы открыть экран настройки конфигурации событий и продолжить процесс настройки.
6. Введите параметры конфигурации AppsFlyer и нажмите Сохранить:
- Название конфигурации
- Используйте одинаковые настройки для сред разработки и продакшена.
- Ключ разработчика
- Созданная вами конфигурация отображается в группе AppsFlyer Default Group
Следующий шаг – установить связь между входными платформами и конфигурацией выходных событий AppsFlyer.
7. Нажмите Соединения.
8. Выберите входную платформу (в данном примере – iOS), затем нажмите Подключить выход.
9. Выберите карточку AppsFlyer, а затем выберите конфигурацию AppsFlyer, созданную ранее.
10. Введите настройки подключения AppsFlyer:
Apple App ID (введите только номер, без префикса ID). Например, если ваш App ID — id123456789, введите 123456789.)
11. Нажмите Добавить подключение.
AppsFlyer теперь отображается как подключенный выходной источник. Могут быть доступны дополнительные параметры, например пользовательские сопоставления. Подробнее см. в документации mParticle.
Интеграции фидов
В этом разделе описано, как подключить поток данных из AppsFlyer к mParticle.
Общая информация об интеграции AppsFlyer доступна по адресу https://docs.mparticle.com/integrations/appsflyer/feed/.
1. На дэшборде mParticle (https://app.mparticle.com) выберите свое Приложение (также называется Workspace)
2. Выберите Directory в левом навигационном меню
3. Кликните плитку AppsFlyer, чтобы просмотреть сведения об интеграции, содержащие информацию об интеграции.
4. Нажмите Add AppsFlyer to Setup.
5. Выберите тип интеграции Input Feed Integration Type и кликните Add to Setup.
После этого откроется экран Setup, где вы сможете продолжить процесс настройки.
6. Введите настройки конфигурации AppsFlyer и кликните Create:
- Название конфигурации
- Действовать от имени приложения
7. Завершите настройку в дэшборде AppsFlyer, используя предоставленные данные аутентификации.
Отложенная глубинная ссылка (диплинкинг)
AppsFlyer предоставляет вам доступ к данным атрибуции пользователей в реальном времени на уровне SDK. Это позволяет персонализировать лендинг (посадочную страницу), которую увидит пользователь, когда откроет приложение в первый раз после установки. Эту функцию обычно называют "отложенным" глубинным связыванием.
Подробнее об отложенном диплинкинге см. здесь.
Данные конверсии AppsFlyer содержат параметр под названием is_First_Launch. The value of is_First_Launch равно 'true' только при первом запуске и 'false' при всех последующих запусках. Этот параметр можно использовать, чтобы при каждом запуске определять, нужно ли приложению выполнять отложенный диплинкинг для пользователя.
af_dp → $deeplink_path
Например
$deeplink_path=product/Banana-Pet-Costume/dd67268672b345e491656c871af8aa29
af_dp включает закодированную схему URI и путь
af_dp →
%20jet%3A%2F%2Fproduct%2FBanana-Pet-Costume%2Fdd67268672b345e491656c871af8aa29
Android;
Для Android выполните это с помощью SharedPreferences: здесь.
AttributionListener myListener = new AttributionListener() {
@Override
public void onResult(@NonNull AttributionResult attributionResult) {
if (attributionResult.getServiceProviderId() == MParticle.ServiceProviders.APPSFLYER) {
JSONObject attributionParams = attributionResult.getParameters();
if (attributionParams != null && attributionParams.has(AppsFlyerKit.INSTALL_CONVERSION_RESULT)) {
Log.d("Conversion result", attributionParams.toString());
} else if (attributionParams != null && attributionParams.has(AppsFlyerKit.APP_OPEN_ATTRIBUTION_RESULT)) {
Log.d("App open result", attributionParams.toString());
}
}
}
@Override
public void onError(@NonNull AttributionError attributionError) {
Log.d("Attribution Data Error", attributionError.toString());
}
};
MParticleOptions options = MParticleOptions.builder(this)
.credentials("replaceWithAPIKey", "replace-withAPISecret")
.attributionListener(myListener)
.build();
MParticle.start(options);
https://support.appsflyer.com/hc/article_attachments/360016192917
Для iOS: выполните это в UserDefaults: здесь
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
MParticleOptions *options = [MParticleOptions optionsWithKey:@"<>" secret:@"<>"];
options.onAttributionComplete = ^void (MPAttributionResult *_Nullable attributionResult, NSError * _Nullable error) {
if (error) {
NSLog(@"Attribution fetching for kitCode=%@ failed with error=%@", error.userInfo[mParticleKitInstanceKey], error);
return;
}
NSLog(@"Attribution fetching for kitCode=%@ completed with linkInfo: %@", attributionResult.kitCode, attributionResult.linkInfo);
}
[[MParticle sharedInstance] startWithOptions:options];
return YES;
}
Сценарии использования AppsFlyer/mParticle
| Кейс использования | Окно повторного вовлечения | Метод SDK AppsFlyer | Метод mParticle-AF Kit |
|---|---|---|---|
| Отложенный диплинкинг | https://support.appsflyer.com/hc/article_attachments/360016192917 | onConversionDataSuccess | checkForDeferredDeepLinkWithCompletionHandler |
| Universal Links (универсальные ссылки) | https://support.appsflyer.com/hc/article_attachments/360016192917 | continueUserActivity | continueUserActivity |
| Открытие приложения | https://support.appsflyer.com/hc/article_attachments/360016192917 | onAppOpenAttribution | checkForDeferredDeepLinkWithCompletionHandler |
| Отложенный диплинкинг | Android; | onConversionDataSuccess | checkForDeepLink |
| Ссылки Android-приложения | Android; | <intent-filter android:autoVerify="true"> | continueUserActivity |
| Открытие приложения | Android; | onAppOpenAttribution | checkForDeepLink |
Обработка пользовательских флагов
AppsFlyer также позволяет показывать персонализированный контент или направлять существующих пользователей в определенные разделы приложения ПОСЛЕ первого запуска. Когда существующие пользователи переходят в приложение по диплинкингу, приложение открывается с помощью метода onOpenAttribution, который возвращает данные URL-адреса источника.
if let conversionData = params?[MPKitAppsFlyerConversionResultKey] as? [AnyHashable: Any], !alreadyLoggedAppsflyerConversionData {
logAppsflyerConversionData(conversionData: conversionData)
alreadyLoggedAppsflyerConversionData = true
if let onelinkURL = (conversionData["af_dp"] as? String).flatMap(URL.init) {
UIApplication.appDelegate._linkController.handle(onelinkURL, source: .appsflyer)
}
} else if let appOpenData = params?[MPKitAppsFlyerAppOpenResultKey] as? [AnyHashable: Any] {
logAppsflyerAppOpenData(appOpenData: appOpenData as? [String: Any])
}AppsFlyer использует UserDefaults в iOS и Shared Preferences в Android, чтобы указать, открывает ли пользователь приложение впервые и его нужно перенаправить на соответствующую страницу, или приложение уже открывалось и пользователь уже был направлен на эту страницу. Для этого значение alreadyLoggedAppsflyerConversionData считывается из UserDefaults/
Подробнее о показе персонализированного контента при диплинкинге читайте здесь.
Включение измерения удалений AppsFlyer в mParticle
Измерение удалений AppsFlyer не включается автоматически в наборе SDK mParticle-AppsFlyer. Чтобы измерять удаления приложения, вызывайте методы AppsFlyer напрямую, следуя документации AppsFlyer по измерению удалений.
Чтобы настроить измерение удалений для iOS или Android:
- Вызывайте методы AppsFlyer напрямую, следуя нашей документации по измерению удалений