---
title: "Branch"
description: "Tích hợp Branch với Adapty để theo dõi deep link và lượt chuyển đổi trong ứng dụng."
---

[Branch](https://www.branch.io/) giúp doanh nghiệp tiếp cận, tương tác và đánh giá kết quả trên nhiều thiết bị, kênh và nền tảng khác nhau. Đây là nền tảng thân thiện với người dùng, được thiết kế để tăng doanh thu di động thông qua các liên kết chuyên biệt hoạt động liền mạch trên mọi thiết bị, kênh và nền tảng.

Adapty cung cấp bộ dữ liệu đầy đủ giúp bạn theo dõi [các sự kiện gói đăng ký](events) từ các cửa hàng tại một nơi. Với Adapty, bạn có thể dễ dàng xem hành vi của người dùng, tìm hiểu sở thích của họ và sử dụng thông tin đó để giao tiếp theo cách có mục tiêu và hiệu quả.

Tích hợp giữa Adapty và Branch hoạt động theo hai cách chính.

1. **Nhận dữ liệu attribution từ Branch**  
    Sau khi thiết lập tích hợp Branch, Adapty sẽ bắt đầu nhận dữ liệu attribution từ Branch. Bạn có thể dễ dàng xem dữ liệu này trên trang hồ sơ người dùng.

    
      <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. **Gửi sự kiện gói đăng ký đến Branch**  
   Adapty có thể gửi tất cả các sự kiện gói đăng ký được cấu hình trong phần tích hợp của bạn đến Branch. Nhờ đó, bạn có thể theo dõi các sự kiện này trong Branch dashboard.

## Thiết lập tích hợp \{#set-up-integration\}

### Kết nối Adapty với Branch \{#connect-adapty-to-branch\}

Để tích hợp Branch, vào [Integrations > Branch](https://app.adapty.io/integrations/branch) trong Adapty Dashboard, bật toggle từ tắt sang bật và điền thông tin vào các trường.

  <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 */
  }}
/>

Để lấy giá trị cho trường **Branch Key**, mở [Account Settings](https://dashboard.branch.io/account-settings/profile) trên Branch và tìm trường **Branch Key**. Sử dụng giá trị này cho trường **Key test** (cho Sandbox) hoặc **Key live** (cho Production) trong Adapty Dashboard. Trong Branch, chuyển đổi giữa môi trường Live và Test để lấy key tương ứng.

  <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 */
  }}
/>

### Cấu hình sự kiện và tag \{#configure-events-and-tags\}

Phía dưới phần thông tin xác thực, có ba nhóm sự kiện bạn có thể gửi đến Branch từ Adapty. Chỉ cần bật những sự kiện bạn cần. Xem danh sách đầy đủ các sự kiện mà Adapty cung cấp [tại đây](events).

Bạn có thể gửi sự kiện kèm theo Proceeds \(sau khi Apple/Google khấu trừ\) hoặc chỉ doanh thu. Ngoài ra, bạn có thể chọn tùy chọn báo cáo theo tiền tệ của người dùng.

  <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 */
  }}
/>

Chúng tôi khuyên bạn nên dùng tên sự kiện mặc định do Adapty cung cấp. Tuy nhiên, bạn có thể thay đổi tên sự kiện tùy theo nhu cầu.

Adapty sẽ gửi các sự kiện gói đăng ký đến Branch thông qua tích hợp server-to-server, cho phép bạn xem tất cả sự kiện gói đăng ký trong Branch dashboard và liên kết chúng với các chiến dịch acquisition của bạn.

### Kết nối ứng dụng với Branch \{#connect-your-app-to-branch\}

1. Gọi phương thức SDK `.setIntegrationIdentifier()` để khởi tạo kết nối. Bạn có thể truyền Branch Identity ID vào tham số `customerUserId`.

  ---
no_index: true
---

import Callout from '../../../components/Callout.astro';

<Callout type="note">
Các SDK bên thứ ba tạo user ID theo cách bất đồng bộ. ID có thể chưa sẵn sàng khi `Adapty.activate()` chạy. Nếu **Customer User ID** của bạn đến từ một trong các SDK này, hãy gọi `Adapty.activate()` mà không truyền ID đó. Khi ID đã có, gọi `setIntegrationIdentifier()`, sau đó gọi `identify()` với CUID.
</Callout>

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

  ```swift showLineNumbers
  do {
      // Adapty SDK 4.x
      try await Adapty.setIntegrationIdentifier(.branchId(<BRANCH_IDENTITY_ID>))
      // Adapty SDK 3.x
      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. Sử dụng phương thức `.updateAttribution()` để lưu dữ liệu attribution. Nếu bạn chưa chỉ định Branch user ID ở bước trước, hãy truyền nó vào tham số `networkUserId` tại đây.

  <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 SDK 4.x
                  Adapty.updateAttribution(data, source: .branch)
                  // Adapty SDK 3.x
                  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';
  import branch from 'react-native-branch';

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

  </TabItem>
  </Tabs>

## Cấu trúc sự kiện \{#event-structure\}

Adapty gửi các sự kiện đã chọn đến Branch theo cấu hình trong phần **Events names** trên [**trang Branch Integration**](https://app.adapty.io/integrations/branch). Mỗi sự kiện có cấu trúc như sau:

```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"
  }
}
```

Trong đó:

| Tham số                        | Kiểu   | Mô tả                                                                                                                                              |
|:-------------------------------|:-------|:---------------------------------------------------------------------------------------------------------------------------------------------------|
| `branch_key`                   | String | Branch Key của bạn.                                                                                                                                |
| `name`                         | String | Tên sự kiện Branch (ánh xạ từ sự kiện Adapty, ví dụ: "PURCHASE").                                                                                 |
| `user_data`                    | Object | Thông tin người dùng.                                                                                                                              |
| `user_data.os`                 | String | "Android" hoặc "iOS".                                                                                                                              |
| `user_data.developer_identity` | String | Customer User ID của người dùng.                                                                                                                   |
| `user_data.country`            | String | Mã quốc gia dựa trên IP của người dùng.                                                                                                            |
| `user_data.ip`                 | String | Địa chỉ IP của người dùng.                                                                                                                         |
| `user_data.idfa`               | String | **Chỉ iOS**. ID cho Nhà quảng cáo.                                                                                                                 |
| `user_data.idfv`               | String | **Chỉ iOS**. ID cho Nhà cung cấp.                                                                                                                  |
| `user_data.aaid`               | String | **Chỉ Android**. Google Advertising ID.                                                                                                            |
| `event_data`                   | Object | Các chỉ số sự kiện tiêu chuẩn (chỉ xuất hiện với sự kiện PURCHASE và các sự kiện tương tự).                                                        |
| `event_data.transaction_id`    | String | Store Transaction ID.                                                                                                                              |
| `event_data.revenue`           | Float  | Giá trị doanh thu.                                                                                                                                 |
| `event_data.currency`          | String | Mã tiền tệ (ví dụ: "USD").                                                                                                                         |
| `custom_data`                  | Object | Thuộc tính chi tiết của sự kiện (chứa tất cả các [trường sự kiện](webhook-event-types-and-fields#for-most-event-types) hiện có). |