---
title: "Branch"
description: "Интегрируйте Branch с Adapty для отслеживания диплинков и конверсий приложения."
---

[Branch](https://www.branch.io/) помогает охватывать пользователей, взаимодействовать с ними и оценивать результаты на разных устройствах, каналах и платформах. Это удобная платформа для повышения мобильного дохода с помощью специальных ссылок, которые корректно работают на всех устройствах, каналах и платформах.

Adapty предоставляет полный набор данных, позволяющий отслеживать [события подписок](events) из сторов в одном месте. С Adapty вы легко увидите поведение подписчиков, узнаете их предпочтения и сможете коммуницировать с ними точечно и эффективно.

Интеграция между Adapty и Branch работает двумя способами.

1. **Получение данных атрибуции из Branch**  
    После настройки интеграции Adapty начнёт получать данные атрибуции из Branch. Просматривать эти данные можно на странице профиля пользователя.

    
      <img src="/assets/shared/img/49f4aa7-CleanShot_2023-08-11_at_17.36.072x.webp"
      style={{
        border: '1px solid #727272', /* border width and color */
        width: '700px', /* image width */
        display: 'block', /* for alignment */
        margin: '0 auto' /* center alignment */
      }}
    />
    

2. **Отправка событий подписок в Branch**  
   Adapty может отправлять все события подписок, настроенные в интеграции, в Branch. В результате вы сможете отслеживать эти события в дашборде Branch и связывать их с вашими рекламными кампаниями.

## Настройка интеграции \{#set-up-integration\}

### Подключение Adapty к Branch \{#connect-adapty-to-branch\}

Чтобы настроить интеграцию с Branch, перейдите в [Integrations > Branch](https://app.adapty.io/integrations/branch) в дашборде Adapty, включите переключатель и заполните поля.

  <img src="/assets/shared/img/817a051-CleanShot_2023-08-11_at_15.54.372x.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

Чтобы получить значение для поля **Branch Key**, откройте [настройки аккаунта Branch](https://dashboard.branch.io/account-settings/profile) и найдите поле **Branch Key**. Используйте его в поле **Key test** (для песочницы) или **Key live** (для продакшена) в дашборде Adapty. В Branch переключайтесь между окружениями Live и Tests для получения нужного ключа.

  <img src="/assets/shared/img/130e58b-CleanShot_2023-08-11_at_15.24.162x.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

### Настройка событий и тегов \{#configure-events-and-tags\}

Под полями учётных данных находятся три группы событий, которые можно отправлять в Branch из Adapty. Просто включите нужные. Полный список событий, предлагаемых Adapty, доступен [здесь](events).

Вы можете отправлять события с выручкой после вычета комиссии Apple/Google или только с доходом. Также можно включить отчётность в валюте пользователя.

  <img src="/assets/shared/img/a645cf8-CleanShot_2023-08-11_at_15.18.282x.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

Мы рекомендуем использовать названия событий по умолчанию, предоставляемые Adapty. При необходимости их можно изменить.

Adapty отправляет события подписок в Branch через server-to-server интеграцию, что позволяет просматривать все события подписок в дашборде Branch и связывать их с вашими рекламными кампаниями.

### Подключение приложения к Branch \{#connect-your-app-to-branch\}

1. Вызовите метод SDK `.setIntegrationIdentifier()` для инициализации соединения. Вы можете передать Branch Identity ID в параметр `customerUserId`.

  ---
no_index: true
---
import Callout from '../../../components/Callout.astro';

<Callout type="note">
Если вы используете сторонний user ID в качестве Customer User ID, не передавайте его во время `activate()` — сторонний SDK может ещё не успеть его сгенерировать. Вместо этого сначала вызовите `activate()` без CUID, затем `setIntegrationIdentifier()`, а потом `identify()` с CUID.
</Callout>

  <Tabs groupId="current-os" queryString>
  <TabItem value="swift" label="iOS (Swift)" default>

  ```swift showLineNumbers
  do {
      try await Adapty.setIntegrationIdentifier(
          key: "branch_id", 
          value: <BRANCH_IDENTITY_ID>
      )
  } catch {
      // handle the error
  }
  ```
  </TabItem>
  <TabItem value="kotlin" label="Android (Kotlin)" default>

  ```kotlin showLineNumbers
  // login and update attribution and identifier
  Branch.getAutoInstance(this)
      .setIdentity("YOUR_USER_ID") { referringParams, error ->
          referringParams?.let { data ->
              Adapty.updateAttribution(data, "branch") { error ->
                  if (error != null) {
                      //handle the error
                  }
              }
          }
      }

  // logout
  Branch.getAutoInstance(context).logout()
  ```
  </TabItem>
  <TabItem value="flutter" label="Flutter" default>
  ```javascript showLineNumbers
  import 'package:flutter_branch_sdk/flutter_branch_sdk.dart';

  FlutterBranchSdk.setIdentity('YOUR_USER_ID');
  ```
  </TabItem>
  <TabItem value="unity" label="Unity (C#)" default>
  ```csharp showLineNumbers
  Branch.setIdentity("your user id");
  ```
  </TabItem>
  <TabItem value="rn" label="React Native (TS)" default>

  ```typescript showLineNumbers
  import branch from 'react-native-branch';

  branch.setIdentity('YOUR_USER_ID');
  ```

  </TabItem>
  </Tabs>

2. Используйте метод `.updateAttribution()` для сохранения данных атрибуции. Если вы не указали Branch user ID на предыдущем шаге, передайте его в параметр `networkUserId` здесь.

  <Tabs groupId="current-os" queryString>
  <TabItem value="swift" label="iOS (Swift)" default>

  ```swift showLineNumbers
  class YourBranchImplementation {
      func initializeBranch() {
          // Pass the attribution you receive from the initializing method of Branch iOS SDK to Adapty.
          Branch.getInstance().initSession(launchOptions: launchOptions) { (data, error) in
              if let data {
                  Adapty.updateAttribution(data, source: .branch)
              }
          }
      }
  }

  ```
  </TabItem>
  <TabItem value="kotlin" label="Android (Kotlin)" default>

  ```kotlin showLineNumbers
  //everything is in the above snippet for Android
  ```
  </TabItem>
  <TabItem value="flutter" label="Flutter (Dart)" default>

  ```javascript showLineNumbers
  try {
      await Adapty().setIntegrationIdentifier(
          key: "branch_id", 
          value: <BRANCH_IDENTITY_ID>,
      );
  } on AdaptyError catch (adaptyError) {
      // handle the error
  } catch (e) {
      // handle the error
  }
  ```
  </TabItem>
  <TabItem value="unity" label="Unity (C#)" default>

  ```csharp showLineNumbers
  using AdaptySDK;

  Branch.initSession(delegate(Dictionary<string, object> parameters, string error) {
      string attributionString = JsonUtility.ToJson(parameters);
      
      Adapty.UpdateAttribution(
        attributionString, 
        "branch", 
        (error) => {
          // handle the error
      });
  });
  ```
  </TabItem>
  <TabItem value="rn" label="React Native (TS)" default>

  ```typescript showLineNumbers
  import { adapty, AttributionSource } from 'react-native-adapty';

  branch.subscribe({
    enComplete: ({
      params,
    }) => {
      adapty.updateAttribution(params, "branch");
    },
  });
  ```

  </TabItem>
  </Tabs>

## Структура события \{#event-structure\}

Adapty отправляет выбранные события в Branch в соответствии с настройками в разделе **Events names** на [странице интеграции Branch](https://app.adapty.io/integrations/branch). Каждое событие имеет следующую структуру:

```json
{
  "branch_key": "key_live_kaFuWw8WvY7n1ss7...",
  "name": "PURCHASE",
  "user_data": {
    "os": "iOS",
    "developer_identity": "user_12345",
    "country": "US",
    "ip": "192.168.100.1",
    "idfa": "00000000-0000-0000-0000-000000000000",
    "idfv": "00000000-0000-0000-0000-000000000000",
    "aaid": "00000000-0000-0000-0000-000000000000"
  },
  "event_data": {
    "transaction_id": "GPA.3383-4699-1373-07113",
    "revenue": 9.99,
    "currency": "USD"
  },
  "custom_data": {
    "vendor_product_id": "yearly.premium.6999",
    "original_transaction_id": "GPA.3383-4699-1373-07113",
    "store": "play_store",
    "environment": "production"
  }
}
```

Где:

| Параметр                       | Тип    | Описание                                                                                                                                |
|:-------------------------------|:-------|:----------------------------------------------------------------------------------------------------------------------------------------|
| `branch_key`                   | String | Ваш Branch Key.                                                                                                                         |
| `name`                         | String | Название события Branch (сопоставляется с событием Adapty, например, "PURCHASE").                                                       |
| `user_data`                    | Object | Информация о пользователе.                                                                                                              |
| `user_data.os`                 | String | "Android" или "iOS".                                                                                                                    |
| `user_data.developer_identity` | String | Customer User ID пользователя.                                                                                                          |
| `user_data.country`            | String | Код страны на основе IP пользователя.                                                                                                   |
| `user_data.ip`                 | String | IP-адрес пользователя.                                                                                                                  |
| `user_data.idfa`               | String | **Только iOS**. Идентификатор для рекламодателей.                                                                                       |
| `user_data.idfv`               | String | **Только iOS**. Идентификатор для разработчиков.                                                                                        |
| `user_data.aaid`               | String | **Только Android**. Google Advertising ID.                                                                                              |
| `event_data`                   | Object | Стандартные метрики события (присутствует только для PURCHASE и аналогичных событий).                                                   |
| `event_data.transaction_id`    | String | ID транзакции в сторе.                                                                                                                  |
| `event_data.revenue`           | Float  | Сумма дохода.                                                                                                                           |
| `event_data.currency`          | String | Код валюты (например, "USD").                                                                                                           |
| `custom_data`                  | Object | Детальные атрибуты события (содержит все доступные [поля события](webhook-event-types-and-fields#for-most-event-types)). |