> ## 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.

# SDK 마이그레이션 가이드 - 유니티 SDK

에어브릿지 유니티 SDK의 업데이트에 필요한 사항을 확인할 수 있습니다. 현재 버전 이후부터 업데이트 이후 버전까지의 사항을 모두 확인하는 것을 권장합니다.

## v4.5.0으로 업데이트

에어브릿지 유니티 SDK v4.5.0 업데이트 시, 안드로이드 딥링크 Intent Filter 설정이 `/Assets/Plugins/Android/AndroidManifest.xml`에서 `/Assets/Plugins/Android/Airbridge.androidlib/AndroidManifest.xml`로 이동했습니다. 기존 위치의 Intent Filter는 수동으로 제거해 주시기 바랍니다.

## v1.x에서 v4.0으로 업데이트

에어브릿지 유니티 SDK를 v4.0으로 업데이트하면 확인해 주세요.

<Accordion title="전체 변경사항">
  #### 옵션

  | Airbridge Settings (v1)                 | Airbridge Settings (v4)                    | 변경점                          |
  | --------------------------------------- | ------------------------------------------ | ---------------------------- |
  | App Name                                | App Name                                   | -                            |
  | App Token                               | App Token                                  | -                            |
  | Log Level                               | Log Level                                  | -                            |
  | iOS URI Scheme                          | iOS URI Scheme                             | -                            |
  | Android URI Scheme                      | Android URI Scheme                         | -                            |
  | Custom Domain                           | Custom Domain                              | 다중 입력 지원 기능이 추가되었습니다.        |
  | Session Timeout Seconds                 | Session Timeout Seconds                    | -                            |
  | User Info Hash Enabled                  | User Info Hash Enabled                     | -                            |
  | Location Collection Enabled             | Location Collection Enabled                | -                            |
  | Track Airbridge Link Only               | Track Airbridge Link Only                  | -                            |
  | Auto Start Tracking Enabled             | Auto Start Tracking Enabled                | -                            |
  | Facebook Deferred App Link Enabled      | Facebook Deferred App Link Enabled         | -                            |
  | iOS Tracking Authorize Timeout Seconds  | iOS Tracking Authorize Timeout Seconds     | -                            |
  | Sdk Signature Secret ID                 | SDK Signature Secret ID                    | 이름이 변경되었습니다.                 |
  | Sdk Signature Secret                    | SDK Signature Secret                       | 이름이 변경되었습니다.                 |
  | -                                       | Track In Session Life Cycle Event Enabled  | 새로운 기능이 추가되었습니다.             |
  | -                                       | Pause Event Transmit On Background Enabled | 새로운 기능이 추가되었습니다.             |
  | -                                       | Clear Event Buffer On Initialize Enabled   | 새로운 기능이 추가되었습니다.             |
  | -                                       | SDK Enabled                                | 새로운 기능이 추가되었습니다.             |
  | -                                       | App Market Identifier                      | 새로운 기능이 추가되었습니다.             |
  | -                                       | Event Buffer Count Limit                   | 새로운 기능이 추가되었습니다.             |
  | -                                       | Event Buffer Size Limit In Gibibyte        | 새로운 기능이 추가되었습니다.             |
  | -                                       | Event Transmit Interval Seconds            | 새로운 기능이 추가되었습니다.             |
  | Meta Install Referrer (Facebook App ID) | Meta Install Referrer (Facebook App ID)    | -                            |
  | In-App Purchase Environment             | -                                          | v4.0.0 에서는 해당 기능을 지원하지 않습니다. |

  #### 함수 (Unity)

  <Danger>
    **주의하세요**

    접근 함수 클래스의 이름이 `AirbridgeUnity` 에서 `Airbridge` 로 변경되었습니다.
  </Danger>

  | AirbridgeUnity (v1)         | Airbridge (v4)                  | 변경점                                   |
  | --------------------------- | ------------------------------- | ------------------------------------- |
  | -                           | EnableSDK                       | 새로운 기능이 추가되었습니다.                      |
  | -                           | DisableSDK                      | 새로운 기능이 추가되었습니다.                      |
  | IsSDKEnabled                | IsSDKEnabled                    | -                                     |
  | StartTracking               | StartTracking                   | -                                     |
  | StopTracking                | StopTracking                    | -                                     |
  | -                           | IsTrackingEnabled               | 새로운 기능이 추가되었습니다.                      |
  | SetUser                     | -                               | User 관련 함수들로 대체되었습니다.                 |
  | -                           | SetUserID                       | 새로운 기능이 추가되었습니다.                      |
  | -                           | ClearUserID                     | 새로운 기능이 추가되었습니다.                      |
  | -                           | SetUserEmail                    | 새로운 기능이 추가되었습니다.                      |
  | -                           | ClearUserEmail                  | 새로운 기능이 추가되었습니다.                      |
  | -                           | SetUserPhone                    | 새로운 기능이 추가되었습니다.                      |
  | -                           | ClearUserPhone                  | 새로운 기능이 추가되었습니다.                      |
  | -                           | SetUserAttribute                | 새로운 기능이 추가되었습니다.                      |
  | -                           | RemoveUserAttribute             | 새로운 기능이 추가되었습니다.                      |
  | -                           | ClearUserAttributes             | 새로운 기능이 추가되었습니다.                      |
  | -                           | SetUserAlias                    | 새로운 기능이 추가되었습니다.                      |
  | -                           | RemoveUserAlias                 | 새로운 기능이 추가되었습니다.                      |
  | -                           | ClearUserAlias                  | 새로운 기능이 추가되었습니다.                      |
  | ExpireUser                  | ClearUser                       | 이름이 변경되었습니다.                          |
  | ClickTrackingLink           | Click                           | 이름이 변경되었습니다. 콜백 기능이 추가되었습니다.          |
  | ImpressionTrackingLink      | Impression                      | 이름이 변경되었습니다. 콜백 기능이 추가되었습니다.          |
  | SetDeeplinkCallback         | SetOnDeeplinkReceived           | 이름이 변경되었습니다. 값을 람다 형태로 제공받도록 변경되었습니다. |
  | SetOnAttributionReceived    | SetOnAttributionReceived        | 값을 람다 형태로 제공받도록 변경되었습니다.              |
  | TrackEvent                  | TrackEvent                      | 이벤트 정보를 입력받는 방식이 변경되었습니다.             |
  | SetDeviceAlias              | SetDeviceAlias                  | -                                     |
  | RemoveDeviceAlias           | RemoveDeviceAlias               | -                                     |
  | ClearDeviceAlias            | ClearDeviceAlias                | -                                     |
  | RegisterPushToken           | RegisterPushToken               | -                                     |
  | CreateWebInterface          | -                               | WebInterface 관련 함수들로 대체되었습니다.         |
  | -                           | CreateWebInterfaceScript        | 새로운 기능이 추가되었습니다.                      |
  | -                           | HandleWebInterfaceCommand       | 새로운 기능이 추가되었습니다.                      |
  | FetchAirbridgeGeneratedUUID | FetchAirbridgeGeneratedUUID     | 콜백 기능이 추가되었습니다.                       |
  | FetchDeviceUUID             | FetchDeviceUUID                 | onFailure 콜백이 추가되었습니다.                |
  | StartInAppPurchaseTracking  | -                               | v4.0.0 에서는 해당 기능을 지원하지 않습니다.          |
  | StopInAppPurchaseTracking   | -                               | v4.0.0 에서는 해당 기능을 지원하지 않습니다.          |
  | SetOnInAppPurchaseReceived  | -                               | v4.0.0 에서는 해당 기능을 지원하지 않습니다.          |
  | -                           | IsUninstallTrackingNotification | 새로운 기능이 추가되었습니다.                      |

  #### 상수 (Unity)

  | Airbridge.Constants.CATEGORY (v1) | AirbridgeCategory (v4)  | 변경점                               |
  | --------------------------------- | ----------------------- | --------------------------------- |
  | SIGN\_UP                          | SIGN\_UP                | -                                 |
  | SIGN\_IN                          | SIGN\_IN                | -                                 |
  | SIGN\_OUT                         | SIGN\_OUT               | -                                 |
  | VIEW\_HOME                        | -                       | HOME\_VIEWED로 대체되었습니다.            |
  | HOME\_VIEWED                      | HOME\_VIEWED            | -                                 |
  | VIEW\_SEARCH\_RESULT              | -                       | SEARCH\_RESULTS\_VIEWED로 대체되었습니다. |
  | SEARCH\_RESULTS\_VIEWED           | SEARCH\_RESULTS\_VIEWED | -                                 |
  | VIEW\_PRODUCT\_LIST               | -                       | PRODUCT\_LIST\_VIEWED로 대체되었습니다.   |
  | PRODUCT\_LIST\_VIEWED             | PRODUCT\_LIST\_VIEWED   | -                                 |
  | VIEW\_PRODUCT\_DETAILS            | -                       | PRODUCT\_VIEWED로 대체되었습니다.         |
  | PRODUCT\_VIEWED                   | PRODUCT\_VIEWED         | -                                 |
  | ADD\_TO\_CART                     | -                       | ADDED\_TO\_CART로 대체되었습니다.         |
  | ADDED\_TO\_CART                   | ADDED\_TO\_CART         | -                                 |
  | ORDER\_COMPLETE                   | -                       | ORDER\_COMPLETED로 대체되었습니다.        |
  | ORDER\_COMPLETED                  | ORDER\_COMPLETED        | -                                 |
  | ADD\_PAYMENT\_INFO                | ADD\_PAYMENT\_INFO      | -                                 |
  | ADD\_TO\_WISHLIST                 | ADD\_TO\_WISHLIST       | -                                 |
  | INITIATE\_CHECKOUT                | INITIATE\_CHECKOUT      | -                                 |
  | ORDER\_CANCELED                   | ORDER\_CANCELED         | -                                 |
  | START\_TRIAL                      | START\_TRIAL            | -                                 |
  | SUBSCRIBE                         | SUBSCRIBE               | -                                 |
  | UNSUBSCRIBE                       | UNSUBSCRIBE             | -                                 |
  | AD\_IMPRESSION                    | AD\_IMPRESSION          | -                                 |
  | AD\_CLICK                         | AD\_CLICK               | -                                 |
  | COMPLETE\_TUTORIAL                | COMPLETE\_TUTORIAL      | -                                 |
  | ACHIEVE\_LEVEL                    | ACHIEVE\_LEVEL          | -                                 |
  | UNLOCK\_ACHIEVEMENT               | UNLOCK\_ACHIEVEMENT     | -                                 |
  | RATE                              | RATE                    | -                                 |
  | SHARE                             | SHARE                   | -                                 |
  | SCHEDULE                          | SCHEDULE                | -                                 |
  | SPEND\_CREDITS                    | SPEND\_CREDITS          | -                                 |

  | AirbridgeEvent (v1)                | AirbridgeAttribute (v4)               | 변경점               |
  | ---------------------------------- | ------------------------------------- | ----------------- |
  | SetAction                          | ACTION                                | 상수 키 값으로 변경되었습니다. |
  | SetLabel                           | LABEL                                 | 상수 키 값으로 변경되었습니다. |
  | SetValue                           | VALUE                                 | 상수 키 값으로 변경되었습니다. |
  | SetTotalValue                      | -                                     | VALUE로 대체되었습니다.   |
  | SetCurrency                        | CURRENCY                              | 상수 키 값으로 변경되었습니다. |
  | originalCurrency                   | ORIGINAL\_CURRENCY                    | 상수 키 값으로 변경되었습니다. |
  | SetProducts                        | PRODUCTS                              | 상수 키 값으로 변경되었습니다. |
  | SetPeriod                          | PERIOD                                | 상수 키 값으로 변경되었습니다. |
  | SetIsRenewal                       | IS\_RENEWAL                           | 상수 키 값으로 변경되었습니다. |
  | SetRenewalCount                    | RENEWAL\_COUNT                        | 상수 키 값으로 변경되었습니다. |
  | SetProductListId                   | PRODUCT\_LIST\_ID                     | 상수 키 값으로 변경되었습니다. |
  | SetCartId                          | CART\_ID                              | 상수 키 값으로 변경되었습니다. |
  | SetTransactionId                   | TRANSACTION\_ID                       | 상수 키 값으로 변경되었습니다. |
  | SetTransactionType                 | TRANSACTION\_TYPE                     | 상수 키 값으로 변경되었습니다. |
  | SetTransactionPairedEventCategory  | TRANSACTION\_PAIRED\_EVENT\_CATEGORY  | 상수 키 값으로 변경되었습니다. |
  | SetTransactionPairedEventTimestamp | TRANSACTION\_PAIRED\_EVENT\_TIMESTAMP | 상수 키 값으로 변경되었습니다. |
  | SetTotalQuantity                   | TOTAL\_QUANTITY                       | 상수 키 값으로 변경되었습니다. |
  | SetQuery                           | QUERY                                 | 상수 키 값으로 변경되었습니다. |
  | SetInAppPurchased                  | IN\_APP\_PURCHASED                    | 상수 키 값으로 변경되었습니다. |
  | SetContributionMargin              | CONTRIBUTION\_MARGIN                  | 상수 키 값으로 변경되었습니다. |
  | SetOriginalContributionMargin      | ORIGINAL\_CONTRIBUTION\_MARGIN        | 상수 키 값으로 변경되었습니다. |
  | SetListId                          | LIST\_ID                              | 상수 키 값으로 변경되었습니다. |
  | SetRateId                          | RATE\_ID                              | 상수 키 값으로 변경되었습니다. |
  | SetRate                            | RATE                                  | 상수 키 값으로 변경되었습니다. |
  | SetMaxRate                         | MAX\_RATE                             | 상수 키 값으로 변경되었습니다. |
  | SetAchievementId                   | ACHIEVEMENT\_ID                       | 상수 키 값으로 변경되었습니다. |
  | SetSharedChannel                   | SHARED\_CHANNEL                       | 상수 키 값으로 변경되었습니다. |
  | SetDatetime                        | DATE\_TIME                            | 상수 키 값으로 변경되었습니다. |
  | SetDescription                     | DESCRIPTION                           | 상수 키 값으로 변경되었습니다. |
  | SetIsRevenue                       | IS\_REVENUE                           | 상수 키 값으로 변경되었습니다. |
  | SetPlace                           | PLACE                                 | 상수 키 값으로 변경되었습니다. |
  | SetScheduleId                      | SCHEDULE\_ID                          | 상수 키 값으로 변경되었습니다. |
  | SetType                            | TYPE                                  | 상수 키 값으로 변경되었습니다. |
  | SetLevel                           | LEVEL                                 | 상수 키 값으로 변경되었습니다. |
  | SetScore                           | SCORE                                 | 상수 키 값으로 변경되었습니다. |
  | -                                  | AD\_PARTNERS                          | 새로운 기능이 추가되었습니다.  |
  | -                                  | IS\_FIRST\_PER\_USER                  | 새로운 기능이 추가되었습니다.  |

  | Airbridge.Ecommerce.Product (v1) | AirbridgeAttribute (v4) | 변경점               |
  | -------------------------------- | ----------------------- | ----------------- |
  | SetId                            | PRODUCT\_ID             | 상수 키 값으로 변경되었습니다. |
  | SetName                          | PRODUCT\_NAME           | 상수 키 값으로 변경되었습니다. |
  | SetPrice                         | PRODUCT\_PRICE          | 상수 키 값으로 변경되었습니다. |
  | SetQuantity                      | PRODUCT\_QUANTITY       | 상수 키 값으로 변경되었습니다. |
  | SetCurrency                      | PRODUCT\_CURRENCY       | 상수 키 값으로 변경되었습니다. |
  | SetPosition                      | PRODUCT\_POSITION       | 상수 키 값으로 변경되었습니다. |
  | SetCategoryId                    | PRODUCT\_CATEGORY\_ID   | 상수 키 값으로 변경되었습니다. |
  | SetCategoryName                  | PRODUCT\_CATEGORY\_NAME | 상수 키 값으로 변경되었습니다. |
  | SetBrandId                       | PRODUCT\_BRAND\_ID      | 상수 키 값으로 변경되었습니다. |
  | SetBrandName                     | PRODUCT\_BRAND\_NAME    | 상수 키 값으로 변경되었습니다. |

  #### 함수 (Android)

  | AirbridgeUnity (v1) | AirbridgeUnity (v4)   | 변경점          |
  | ------------------- | --------------------- | ------------ |
  | processDeeplinkData | processHandleDeeplink | 이름이 변경되었습니다. |
</Accordion>

### SDK 설치 및 초기화

<Danger>
  **주의하세요**

  에어브릿지 유니티 SDK를 v1.x.x에서 v4.0.0으로 업데이트 하는 경우, 기존에 임포트한 아래에 해당하는 폴더들을 먼저 제거하고 에어브릿지 유니티 SDK v4.0.0 패키지를 추가해 주세요.

  * `Assets/Airbridge`
  * `Assets/Plugins/Airbridge`
</Danger>

`Assets/Airbridge/Resources/AirbridgeData.asset` 의 키값이 변경되었습니다. 아래와 같이 키값을 변경해 주세요.

| AirbridgeData.asset (v1) | AirbridgeData.asset (v4) |
| ------------------------ | ------------------------ |
| iosUriScheme             | iOSURIScheme             |

`AirbridgeUnity.StartTracking` 함수가 `Airbridge.StartTracking` 함수로 대체되었습니다.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
- AirbridgeUnity.StartTracking();
+ Airbridge.StartTracking();
```

`AirbridgeUnity.StopTracking` 함수가 `Airbridge.StopTracking` 함수로 대체되었습니다.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
- AirbridgeUnity.StopTracking();
+ Airbridge.StopTracking();
```

### 딥링크

`AirbridgeUnity.SetDeeplinkCallback` 함수가 `Airbridge.SetOnDeeplinkReceived` 함수로 대체되었습니다.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
public class AirbridgeManager : MonoBehaviour
{
    private void Awake()
    {
-        AirbridgeUnity.SetDeeplinkCallback(gameObject.name);

+        Airbridge.SetOnDeeplinkReceived((string url)  =>
+        {
+            // show proper content
+        });
    }

-    // Method will call by Airbridge when deeplink detected
-    private void OnTrackingLinkResponse(string url)
-    {
-        // show proper content
-    }   
}
```

안드로이드의 `AirbridgeUnity.processDeeplinkData` 함수가 `AirbridgeUnity.processHandleDeeplink` 함수로 대체되었습니다.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
package co.ab180.airbridge.unity;

@Override
protected void onResume() {
    super.onResume();
-    AirbridgeUnity.processDeeplinkData(getIntent());
+    AirbridgeUnity.processHandleDeeplink(getIntent());
}
```

### 커스텀 도메인 설정하기

v1.x 에서는 하나의 커스텀 도메인만 입력할 수 있었지만, v4.0 부터는 여러 개의 커스텀 도메인을 입력할 수 있습니다.

### 인앱 이벤트 및 유저 정보

<Danger>
  **주의하세요**

  기존 `AirbridgeEvent.SetTotalValue` 대신 `AirbridgeAttribute.VALUE` 에 값을 입력해 주세요.

  `totalValue` 를 사용하고 `value` 를 정의하면 `totalValue` 가 `value` 를 덮어 쓰는 로직은 Unity SDK v4.0.0부터 삭제되었습니다.
</Danger>

`AirbridgeUnity.TrackEvent` 함수가 `Airbridge.TrackEvent` 함수로 대체되었습니다.

아래 예시코드를 따라 `AirbridgeUnity.TrackEvent` 함수를 `Airbridge.TrackEvent`함수로 변경해 주세요.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
- AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.ORDER_COMPLETED);
- // action
- @event.SetAction("Tool");
- // label
- @event.SetLabel("Hammer");
- // value
- @event.SetValue(10);
-         
- // semantic attribute (provided by sdk)
- @event.SetCurrency("USD");
-         
- List<Airbridge.Ecommerce.Product> products = new List<Airbridge.Ecommerce.Product>();
- Airbridge.Ecommerce.Product plasticHammer = new Airbridge.Ecommerce.Product();
- // semantic attribute value (provided by sdk)
- plasticHammer.SetId("12345");
- // semantic attribute value (not provided by sdk)
- plasticHammer.AddData("name", "PlasticHammer");
- products.Add(plasticHammer);
- @event.SetProducts(products.ToArray());
-     
- // semantic attribute (not provided by sdk)
- @event.AddSemanticAttribute("totalQuantity", 1);
-        
- // custom attribute
- @event.AddCustomAttribute("promotion", "FirstPurchasePromotion");

+ Airbridge.TrackEvent(
+    category: AirbridgeCategory.ORDER_COMPLETED,
+    semanticAttributes: new Dictionary<string, object>()
+    {
+        // action
+        { AirbridgeAttribute.ACTION, "Tool" },
+        // label
+        { AirbridgeAttribute.LABEL, "Hammer" },
+        // value
+        { AirbridgeAttribute.VALUE, 10 },
+        // semantic attribute (provided by sdk)
+        { AirbridgeAttribute.CURRENCY, "USD" },
+        {
+            AirbridgeAttribute.PRODUCTS, new List<Dictionary<string, object>>()
+            {
+                new Dictionary<string, object>()
+                {
+                    // semantic attribute value (provided by sdk)
+                    { AirbridgeAttribute.PRODUCT_ID, "12345" },
+                    // semantic attribute value (not provided by sdk)
+                    { "name", "PlasticHammer" }
+                }
+            }
+        },
+        // semantic attribute (not provided by sdk)
+        { "totalQuantity", 1 }
+    },
+    customAttributes: new Dictionary<string, object>()
+    {
+        // custom attribute
+        { "promotion", "FirstPurchasePromotion" }
+    }
+);
```

<Danger>
  **주의하세요**

  `AirbridgeEvent` 클래스는 제거되었습니다.

  `Airbridge.TrackEvent` 함수의 첫 번째 파라미터에 AirbridgeEvent 생성자에 포함되는 `category` 정보가 포함되어야 합니다.

  `Airbridge.TrackEvent` 함수의 두 번째 파라미터에 `AirbridgeEvent.SetAction`, `AirbridgeEvent.SetLabel`, `AirbridgeEvent.SetValue`, `Semantic Attributes` 값들이 포함되어야 합니다.

  `Airbridge.TrackEvent` 함수의 세 번째 파라미터에 `Custom Attributes` 값들이 포함되어야 합니다.
</Danger>

`AirbridgeUnity.SetUser` 함수가 [`Airbridge.SetUser`](/ko/developers/unity-sdk-v4#%EC%9C%A0%EC%A0%80-%EC%86%8D%EC%84%B1-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0) 관련 함수로 대체되었습니다. 유저 정보를 한 번에 설정하는 `SetUser` 함수는 지원하지 않습니다.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
- AirbridgeUser user = new AirbridgeUser();
- user.SetId("personID");
- user.SetEmail("persondoe@airbridge.io");
- user.SetPhoneNumber("1(123)123-1234");
- user.SetAttribute("key", "value");
- user.SetAlias("key", "value");
- AirbridgeUnity.SetUser(user);

+ Airbridge.SetUserID("personID");
+ Airbridge.SetUserEmail("persondoe@airbridge.io");
+ Airbridge.SetUserPhone("1(123)123-1234");
+ Airbridge.SetUserAttribute("key", "value");
+ Airbridge.SetUserAlias("key", "value");
```

### 추가 설정하기

`AirbridgeUnity.ImpressionTrackingLink` 함수가 `Airbridge.Impression` 함수로 대체되었습니다.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
- AirbridgeUnity.ImpressionTrackingLink("https://abr.ge/~~~");

+ Airbridge.Impression(
+    trackingLink: "https://abr.ge/~~~",
+    onSuccess: () =>
+    {
+        // Handle on success
+    },
+    onFailure: (Exception exception) =>
+    {
+        // Handle on failure
+    }
+);
```

`AirbridgeUnity.ClickTrackingLink` 함수가 `Airbridge.Click` 함수로 대체되었습니다.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
- AirbridgeUnity.ClickTrackingLink("https://abr.ge/~~~");

+ Airbridge.Click(
+    trackingLink: "https://abr.ge/~~~",
+    onSuccess: () =>
+    {
+        // Handle on success
+    },
+    onFailure: (Exception exception) =>
+    {
+        // Handle on failure
+    }
+);
```

`AirbridgeUnity.SetOnAttributionReceived` 함수가 `Airbridge.SetOnAttributionReceived` 함수로 대체되었습니다.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
public class AirbridgeManager : MonoBehaviour
{
    private void Awake()
    {
-        AirbridgeUnity.SetOnAttributionReceived(gameObject.name);

+        Airbridge.SetOnAttributionReceived((Dictionary<string, object> attributionResult) =>
+        {
+            // using attribution
+        });
    }

-    // Method will call by Airbridge when attribution result received
-    private void OnAttributionResultReceived(string data)
-    {
-        // using attribution
-    }
}
```

#### 디바이스 식별자 설정

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
- AirbridgeUnity.SetDeviceAlias("ADD_YOUR_KEY", "AND_YOUR_VALUE");
+ Airbridge.SetDeviceAlias("ADD_YOUR_KEY", "AND_YOUR_VALUE");

- AirbridgeUnity.RemoveDeviceAlias("DELETE_THIS_KEY");
+ Airbridge.RemoveDeviceAlias("DELETE_THIS_KEY");

- AirbridgeUnity.ClearDeviceAlias();
+ Airbridge.ClearDeviceAlias();
```

#### 에어브릿지 SDK의 활성화 여부

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
- bool isSDKEnabled = AirbridgeUnity.IsSDKEnabled();
+ bool isSDKEnabled = Airbridge.IsSDKEnabled();
```

`AirbridgeUnity.CreateWebInterface` 함수가 `Airbridge.CreateWebInterfaceScript` , `Airbridge.HandleWebInterfaceCommand` 함수로 대체되었습니다.

```diff lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
private WebViewObject webViewObject;
string postMessageScript;

- AirbridgeWebInterface webInterface;

void Start()
{
    string PostMessageGenerator(string arg) =>
        $@"
if (window && window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.unityControl) {{
    window.webkit.messageHandlers.unityControl.postMessage({arg});
}} else {{
    var iframe = document.createElement('IFRAME');
    iframe.setAttribute('src', 'unity:' + {arg});
    document.documentElement.appendChild(iframe);
    iframe.parentNode.removeChild(iframe);
    iframe = null;
}}";

-    webInterface = AirbridgeUnity.CreateWebInterface(WebViewController.WebToken, (string command) => PostMessageGenerator(command));
-    postMessageScript = webInterface.Script;
+    postMessageScript = Airbridge.CreateWebInterfaceScript(WebViewController.WebToken, PostMessageGenerator("payload"));

    try
    {
        webViewObject.Init(
            cb: (msg) =>
            {
-                webInterface.Handle(msg);
+                Airbridge.HandleWebInterfaceCommand(msg);
            },
            ...
            ld: (msg) =>
            {
                webViewObject.EvaluateJS(postMessageScript);
            }
            ...
        );
        webViewObject.LoadURL("https://...");
    }
    catch (System.Exception e)
    {
        ...
    }
}
```

<link rel="alternate" hrefLang="en" href="https://help.airbridge.io/en/developers/migration-guide-for-unity-sdk-v4" />

<link rel="alternate" hrefLang="ko" href="https://help.airbridge.io/ko/developers/migration-guide-for-unity-sdk-v4" />
