> ## Documentation Index
> Fetch the complete documentation index at: https://help.airbridge.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 2. Performing Airbridge Development Task

## Introduction

This document explains how to install and use the **Airbridge SDK**.

SDK installation is a **required step** to fully utilize Airbridge’s core features, including performance tracking, deeplink configuration, and event collection.

Each section outlines the required setup steps and important considerations.

Please follow the steps in order to ensure a smooth SDK implementation.

***

## 🔹 2.1 Installing the Airbridge Base SDK

First, refer to the developer guide below and install the Airbridge SDK that matches your development environment.

You can find the **app name** and **SDK token** required for installation in the Airbridge dashboard under:

**Settings → Tokens**

### Helpful Links

* ▶ [**Getting Started with the Airbridge SDK**](/en/developers/airbridge-sdk-overview)

Check supported development languages and install the appropriate SDK.

* ▶ [**Checking Your Token**](/en/guides/tokens)

Learn how to locate your app name and SDK token in the Airbridge dashboard.

***

### ❓ What data does the Airbridge SDK collect automatically?

The Airbridge SDK automatically collects basic information such as:

* Device information (e.g., device model, OS version)
* App version information

For the full list of automatically collected data, refer to the guide below:

* ▶ [**Airbridge SDK Automatically Collected Data**](/en/guides/auto-collected-data)

***

## 🔹 2.2 Collecting IDFA on iOS

To collect **IDFA** from users who allow tracking via the **App Tracking Transparency (ATT) prompt**, additional configuration is required when sending **Install** events on iOS.

The collected IDFA is used for attribution through device ID matching, so please ensure this setup is completed if applicable.

However, if you are **not collecting ADID** (for example, when using a Restricted SDK), this step can be skipped.

### Required Setup

* ▶ [**Tracking Authorization Prompt Configuration**](/en/developers/ios-sdk-v4#configure-att-prompt)

Use `AppTrackingTransparency.framework` to display the ATT prompt and obtain user consent.

***

### 📚 Developer Guides by Platform

| Platform     | Developer Guide                                                  |
| ------------ | ---------------------------------------------------------------- |
| iOS (Swift)  | [Guide](/en/developers/ios-sdk-v4#configure-att-prompt)          |
| React Native | [Guide](/en/developers/react-native-sdk-v4#configure-att-prompt) |
| Flutter      | [Guide](/en/developers/flutter-sdk-v4#configure-att-prompt)      |
| Unity        | [Guide](/en/developers/unity-sdk-v4#configure-att-prompt)        |
| Expo         | [Guide](/en/developers/expo-sdk-v4#configure-att-prompt)         |
| Unreal       | [Guide](/en/developers/unreal-sdk-v4#configure-att-prompt)       |

***

## 🔹 2.3 Configuring Deeplinks

To allow users to land on specific in-app pages when clicking an Airbridge tracking link, implement deeplink navigation using the `Airbridge.handleDeeplink` function.

### How Airbridge Deeplinks Work

* Airbridge tracking links first attempt to open the app via **App Links** or **Universal Links**
* If that fails, the app is opened using a **scheme deeplink**
* Regardless of how the app is opened, the Airbridge SDK delivers the scheme deeplink URL to the app through `Airbridge.handleDeeplink`

👉 Developers only need to implement in-app navigation logic based on the scheme deeplink URL received via `Airbridge.handleDeeplink`.

***

### iOS: Adding Webcredentials for Autofill

On iOS, enabling the **Autofill feature** (password storage) requires adding a **Webcredentials domain** for security reasons.

For details, refer to the guide below:

* ▶ [**Webcredentials Setup Guide**](/en/developers/troubleshooting-ios-sdk-v4#the-domain-of-saved-passwords-appears-as-airbridge-io-or-abr-ge)

***

### 📚 Developer Guides by Platform

| Platform                 | Developer Guide                                          |
| ------------------------ | -------------------------------------------------------- |
| Android (Kotlin, Java)   | [Guide](/en/developers/android-sdk-v4#deep-linking)      |
| iOS (Swift, Objective-C) | [Guide](/en/developers/ios-sdk-v4#deep-linking)          |
| React Native             | [Guide](/en/developers/react-native-sdk-v4#deep-linking) |
| Flutter                  | [Guide](/en/developers/flutter-sdk-v4#deep-linking)      |
| Unity                    | [Guide](/en/developers/unity-sdk-v4#deep-linking)        |
| Expo                     | [Guide](/en/developers/expo-sdk-v4#deep-linking)         |
| Unreal                   | [Guide](/en/developers/unreal-sdk-v4#deep-linking)       |

***

## 🔹 2.4 Sending Events

To measure in-app conversions and run retargeting campaigns, you must send relevant events from the app.

Please refer to the **event taxonomy defined by the marketing team** when implementing event names and properties.

***

## ❓ Frequently Asked Questions

### ▸ Is setting user identifiers mandatory?

No, setting a user identifier is not mandatory. However, it may be useful in the following cases.

For security reasons, we recommend **hashing user identifiers** before sending them.

**Recommended use cases:**

* **Internal analysis:** Analyzing Airbridge events based on internal user IDs
* **Third-party integrations:** Some third-party solutions require user IDs to associate events with logged-in users

***

### ▸ How should events from WebView be sent?

Events that occur in the webView should be set to be recognized as app events in Airbridge. For this purpose, Airbridge provides a Bridge Function that can handle webView events through hybrid app settings.

To ensure that events occurring in the webView are properly sent as app events, please refer to the following setup methods for each development language.

▶ Android, iOS, Flutter, React Native, Unity: After installing Airbridge Web SDK on the webpage, send events with that SDK and apply hybrid app settings to the webView area.

* Android: [Hybrid App Setup](/en/developers/hybrid-app-settings-android-sdk-v4)
* iOS: [Hybrid App Setup](/en/developers/hybrid-app-settings-ios-sdk-v4)
* Flutter: [Hybrid App Setup](/en/developers/hybrid-app-settings-flutter-sdk-v4)
* React Native: [Hybrid App Setup](/en/developers/hybrid-app-settings-react-native-sdk-v4)
* Unity: [Hybrid App Setup](/en/developers/hybrid-app-settings-unity-sdk-v4)

Note that app events sent from the webView should be recorded in the 'App Real-time log', not the 'Web Real-time log' when performing QA.

***

### ▸ Are there any required properties that must not be missing?

It is recommended to collect properties written according to the event taxonomy set in advance by the marketer. However, we guide you on properties that must not be omitted for each event below, so please make sure to include these properties. If you do not collect the events below, you do not need to consider them.

Purchase Completion (Payment Completion) Event

* **Event name**: `airbridge.ecommerce.order.completed`
* **Purchase amount**: `eventData.value`
  * Used to check purchase amounts in reports.
* Currency information (KRW, USD, etc.): `eventData.goal.semanticAttributes.currency`
  * When using ad mediation solutions, revenue earned from in-app ads is collected in US dollars (USD). To convert this to the app's base currency in the dashboard, currency information must be collected in the event.
    * If you are using Applovin Max, Google Admob, or Unity Levelplay Mediation, you can refer to the sample code in [Integrating Mediation Platforms](/en/developers/ad-mediation).
* The base currency is 3 uppercase English letters (e.g., KRW, USD, etc.).
* Please send to `eventData.goal.semanticAttributes.currency`. (Not `eventData.goal.semanticAttributes.products.$0.currency.`)
* Order number: `eventData.goal.semanticAttributes.transactionID`
  * You can later remove duplicate events that come in with the same order number.

Purchase Cancellation Event

* **Event name**: `airbridge.ecommerce.order.canceled`
* **Order numbe**r: `eventData.goal.semanticAttributes.transactionID`
  * Please send the order number from the purchase completion time, not from the cancellation.
  * ▶ [Collecting Purchase Cancellation Events](/en/guides/analyzing-real-purchase-performance)

Ad Impression Event

* **Event name**: `airbridge.adImpression`
* **Currency information (KRW, USD, etc.)**: `eventData.goal.semanticAttributes.currency`
  * When using ad mediation solutions, revenue earned from in-app ads is collected in US dollars (USD). To convert this to the app's base currency in the dashboard, currency information must be collected in the event.
  * If you are using Applovin Max, Google Admob, or Unity Levelplay Mediation, you can refer to the sample code in [Integrating Mediation Platforms](/en/developers/ad-mediation).
* The base currency is 3 uppercase English letters (e.g., KRW, USD, etc.).
* Please send to `eventData.goal.semanticAttributes.currency`. (Not `eventData.goal.semanticAttributes.products.$0.currency`.)

***

### 📚 Developer Guides by Platform

| Platform                 | Developer Guide                                           |
| ------------------------ | --------------------------------------------------------- |
| Web                      | [Guide](/en/developers/web-sdk#web-event)                 |
| Android (Kotlin, Java)   | [Guide](/en/developers/android-sdk-v4#in-app-events)      |
| iOS (Swift, Objective-C) | [Guide](/en/developers/ios-sdk-v4#in-app-events)          |
| React Native             | [Guide](/en/developers/react-native-sdk-v4#in-app-events) |
| Flutter                  | [Guide](/en/developers/flutter-sdk-v4#in-app-events)      |
| Unity                    | [Guide](/en/developers/unity-sdk-v4#in-app-events)        |
| Expo                     | [Guide](/en/developers/expo-sdk-v4#in-app-events)         |
| Unreal                   | [Guide](/en/developers/unreal-sdk-v4#in-app-events)       |

***

## 🔹 2.5 Configuring Additional SDK Features

Beyond basic ad performance tracking, Airbridge provides additional features such as **app uninstall tracking**.

Please complete any additional development tasks agreed upon with the marketing team in:

**1. Preparing for Airbridge Implementation → Decide on Optional Feature Development**

* ▶ [Decide on Optional Feature Development](/en/guides/1-preparing-for-airbridge-implementation)

***

## 🔹 2.6 Testing the SDK

Once all SDK installation steps are complete, verify the following:

* Deeplink configuration
* Event collection
* User identifier transmission (if implemented)
* Any additional SDK feature setups

Refer to the guides below for detailed testing instructions:

* ▶ [Testing the Airbridge SDK (for Marketers)](/en/guides/sdk-testing)
* ▶ [Testing Airbridge Deeplinks (for Marketers)](/en/guides/deep-linking-test)
* ▶ [Testing the Android SDK](/en/developers/testing-android-sdk-v4)
* ▶ [Testing the iOS SDK](/en/developers/testing-ios-sdk-v4)

***

## 🔹 2.7 Deploying the App

After completing SDK testing, deploy the app version with the Airbridge SDK installed to the app store.

***

## ❓ Frequently Asked Questions

### ▸ Where can I find information required for app store review?

You can find all required information in the **“**[**Preparing for App Store Review**](/en/guides/prepare-app-store-review)**”** section of the Airbridge User Guide.

***

## ▶ Next Steps

This completes the installation and configuration of the Airbridge SDK.

Once the SDK-enabled app version is live in the app store, proceed to the next step:

👉 **3.** [**Getting Started with the Airbridge Dashboard**](/en/guides/3-getting-started-with-the-airbridge-dashboard)

<link rel="alternate" hrefLang="en" href="https://help.airbridge.io/en/guides/2-performing-airbridge-development-task" />

<link rel="alternate" hrefLang="ko" href="https://help.airbridge.io/ko/guides/2-performing-airbridge-development-task" />
