# Интеграция с AppsFlyer

<Aside type="caution" icon="setting" title="Требуется помощь разработчика">
 Вам понадобится помощь вашей команды разработчиков для настройки интеграции. Пожалуйста, поделитесь с ними этим руководством.
</Aside>

## Обзор интеграции

[AppsFlyer](https://www.appsflyer.com/) — это платформа мобильной атрибуции и маркетинговой аналитики, которая помогает анализировать привлечение и вовлечение пользователей. Она предоставляет исчерпывающие данные о поведении пользователей в приложении и позволяет отслеживать источники их привлечения. Используя информацию, полученную от AppsFlyer, вы можете создавать эффективные маркетинговые кампании в Pushwoosh.

После настройки интеграции AppsFlyer будет отправлять в Pushwoosh следующую информацию:

*   Поведение пользователя в приложении в виде Events и их атрибутов;
*   Источники привлечения пользователей в виде значений Tag _Acquisition Source_.

### Варианты использования

Используя эти данные, вы можете создавать сегменты пользователей и проводить точно нацеленные и персонализированные кампании в Pushwoosh.
Ниже приведены два примера использования данных AppsFlyer для создания эффективных Customer Journeys в Pushwoosh.

**1. Создавайте высокотаргетированные кампании в Pushwoosh, используя события, отслеживаемые AppsFlyer.**

Допустим, у вас есть новостное приложение. Вы настроили AppsFlyer для отслеживания события _SubscribedToNews_, которое срабатывает каждый раз, когда пользователь подписывается на новостной канал. У этого события есть атрибут category, указывающий на тип новостей, на которые подписывается пользователь: _politics_, _business_ или _sports_.

Pushwoosh получает информацию об этом событии с его значениями атрибутов. Вы можете создать три сегмента пользователей на основе трех возможных значений:

<img src="/integrations-appsflyer-integration-1.webp" alt="Сегменты пользователей на основе атрибутов категории новостей"/>

Теперь вы можете создавать кампании, нацеленные на пользователей, которые интересуются определенным типом новостей:

<img src="/integrations-appsflyer-integration-2.webp" alt="Таргетированные кампании для пользователей, интересующихся определенными категориями новостей"/>

**2. Персонализируйте сообщения на основе данных о поведении пользователей из AppsFlyer.**

В этом примере мы будем использовать приложение для онлайн-покупок. Допустим, AppsFlyer отслеживает событие _AddToWishlist_, которое срабатывает всякий раз, когда пользователь добавляет товар в свой список желаний. У этого события есть атрибут item, указывающий на название товара, добавленного в список желаний.

AppsFlyer отправляет данные о событии _AddToWishlist_ в Pushwoosh, где вы можете персонализировать сообщения в зависимости от выбора пользователей. Например, вы можете создать пресет пуш-уведомления, предлагающий скидку на товар, который пользователь добавил в свой список желаний. Вместо названия товара добавьте [плейсхолдер динамического контента](/ru/developer/guides/personalization/dynamic-content/#personalizing-messages-sent-via-api-with-dynamic-content) с атрибутом _item_:

<img src="/integrations-appsflyer-integration-3.webp" alt="Плейсхолдер динамического контента в пресете пуш-уведомления Pushwoosh"/>

Если пользователь добавляет товар в свой список желаний, он получит пуш-уведомление с информацией о нем. Например, те, кто выберет iPhone 14 Pro Max, увидят такое сообщение:

<img src="/integrations-appsflyer-integration-4.webp" alt="Предпросмотр пуш-уведомления с предложением по iPhone 14 Pro Max" width="375"/>

## Настройка интеграции

<Aside type="note">
Процесс интеграции одинаков для платформ Android и iOS.
</Aside>

1. Интегрируйте Pushwoosh SDK в ваше приложение, если вы еще этого не сделали. Для получения более подробных инструкций [прочтите руководство](/ru/developer/pushwoosh-sdk/pushwoosh-sdk-overview).

<Aside type="caution">
Для корректной работы требуются Pushwoosh iOS SDK версии 6.5.7 или выше и Pushwoosh Android SDK версии 6.6.16 или выше.
</Aside>

2. Чтобы убедиться, что в AppsFlyer отправляются корректные данные, интегрируйте этот фрагмент кода в ваш код. Убедитесь, что он выполняется после инициализации как Pushwoosh SDK, так и AppsFlyer SDK.

<Tabs>
<TabItem label="Java">
```
String pwhwid = Pushwoosh.getInstance().getHwid();
String pwuserid = Pushwoosh.getInstance().getUserId();
Map<String, Object> customData = new HashMap<String, Object>();
customData.put("pushwoosh_hwid", pwhwid);
customData.put("pushwoosh_user_id", pwuserid);
AppsFlyerLib.getInstance().setAdditionalData(customData);
```
</TabItem>

<TabItem label="Objective-C">
```
NSString *pwhwid = [[Pushwoosh sharedInstance] getHWID];
NSString *pwuserid = [[Pushwoosh sharedInstance] getUserId];
NSDictionary *customData = [[NSDictionary alloc] initWithObjectsAndKeys:pwuserid, @"pushwoosh_user_id", pwhwid, @"pushwoosh_hwid", nil];
[[AppsFlyerLib shared] setAdditionalData:customData];
```
</TabItem>
</Tabs>

<Aside type="danger">
При использовании кастомных значений UserID Pushwoosh для идентификации и таргетинга пользователей, убедитесь, что код выполняется после вызова метода **setUserId()** в Pushwoosh SDK с кастомным значением.

Отслеживайте, когда UserID Pushwoosh изменяется в соответствии с логикой вашего мобильного приложения, и своевременно отправляйте обновленные значения в AppsFlyer. Это важно для корректного сопоставления данных, отправляемых с пользователями в вашей базе данных Pushwoosh.
</Aside>

3. Настройте интеграцию с Pushwoosh в AppsFlyer. Для этого в вашем [аккаунте AppsFlyer](https://hq1.appsflyer.com/auth/login) перейдите в **Collaborate** > **Partner Marketplace**. В списке партнеров найдите и выберите Pushwoosh.

<img src="/integrations-appsflyer-integration-5.webp" alt="Поиск Pushwoosh в AppsFlyer"/>

4. Нажмите **Set up integration**. Затем вы будете перенаправлены на страницу настройки интеграции. Там включите переключатель **Activate partner**.

<img src="/integrations-appsflyer-integration-6.webp" alt="Включение переключателя Activate partner в AppsFlyer"/>

<Aside type="note">
Для iOS-приложений по умолчанию включен режим Advanced Privacy Mode, который позволяет контролировать доступность данных атрибуции на уровне пользователя через платформу AppsFlyer. Хотя AppsFlyer не отправляет этот тип данных в Pushwoosh, включенный переключатель Advanced Privacy может мешать передаче данных.

Чтобы Pushwoosh получал все данные, мы рекомендуем отключить Advanced Privacy Mode в **App Settings**. Это не поставит под угрозу конфиденциальность пользовательских данных. Pushwoosh стремится к безопасному и ответственному управлению данными, используя стандартные отраслевые протоколы безопасности для защиты конфиденциальности.
</Aside>

<img src="/integrations-appsflyer-integration-7.webp" alt="Отключение Advanced Privacy Mode в AppsFlyer"/>

5. В разделе **General settings** введите ваши учетные данные Pushwoosh:

*   **API Access Token**. Чтобы получить токен, в вашем аккаунте Pushwoosh перейдите в **Settings > API Access** и скопируйте код. Вы можете узнать больше о API Access Token [в этом руководстве](/ru/developer/api-reference/api-access-token).
*   **Application Code** (XXXXX-XXXXX), который вы можете найти под названием вашего приложения в аккаунте Pushwoosh.

<img src="/integrations-appsflyer-integration-8.webp" alt="Добавление учетных данных Pushwoosh в общих настройках AppsFlyer"/>

6. В разделе **Default postback** выберите **All media sources, including organic**.

<img src="/integrations-appsflyer-integration-9.webp" alt="Настройка раздела Default postback"/>

7. В разделе **In-app event settings** введите ваш **Application Code** и **API Access Token** Pushwoosh.

<img src="/integrations-appsflyer-integration-10.webp" alt="Раздел настроек In-app event с Application Code и API token"/>

8. Включите переключатель **In-app event postback** и настройте события и данные, которые будут включены в постбэки, отправляемые в Pushwoosh.

<img src="/integrations-appsflyer-integration-11.webp" alt="Настройка переключателя In-app event postback в AppsFlyer"/>

Выберите одно или несколько событий AppsFlyer для отправки в Pushwoosh из выпадающего меню и заполните необходимые параметры.

| Параметр | Описание |
| --- | --- |
| **the mapped to partner event** | Хотя это поле является обязательным, не беспокойтесь о том, что вы вводите, так как это не изменит названия событий. Pushwoosh все равно будет получать события с теми же именами, что и в AppsFlyer. |
| **for users from** | В этом поле выберите, будут ли постбэки отправляться исключительно для пользователей, атрибутированных этому партнеру, или для всех источников медиа, включая органические. |
| **including** | <p>Выберите, как данные о событиях будут передаваться в Pushwoosh:</p><ul><li><strong>No values & no revenue:</strong> Отправлять только само событие без каких-либо параметров (значений или дохода).</li><li><strong>Values & no revenue:</strong> Отправлять все параметры, кроме значения дохода.</li><li><strong>Values & revenue:</strong> Отправлять все параметры события, включая значение дохода (если оно существует в событии).<br/>Чтобы получать события с дополнительными атрибутами, отправляемыми в Pushwoosh, выберите Values and Revenue.</li></ul> |

9. После завершения настройки нажмите **Save**.

<Aside type="note">
Прежде чем запускать кампании, обязательно протестируйте интеграцию. Ошибки часто возникают во время настройки, поэтому быстрая проверка поможет избежать траты ресурсов на кампании с отсутствующими или неверными данными.
</Aside>

## Отслеживание кликов в email с помощью AppsFlyer ESP 2.0

Чтобы использовать отслеживание кликов в email и сохранять Universal Links / App Links при отправке писем через Pushwoosh, вы можете настроить [интеграцию с AppsFlyer ESP 2.0 для email](/ru/product/integrations/appsflyer-esp2-email-integration).