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

# AD(X)

<Info>
  **알립니다**

  이 기능은 현재 베타 버전으로 제공되고 있습니다. 서비스 안정화 과정에서 일부 사양이 변경될 수 있습니다.
</Info>

에어브릿지와 AD(X)를 연동해 광고로 발생한 수익과 관련된 데이터를 에어브릿지 대시보드에서 확인할 수 있습니다. 에어브릿지는 AD(X)와의 SDK 연동을 지원합니다.

## **SDK 연동하기**

아래 링크에 따라 AD(X) SDK를 설치해 주세요.

* [AD(X) 안드로이드 SDK 설치 가이드](https://docs.adxcorp.kr/android/integrate)
* [AD(X) iOS SDK 설치 가이드](https://docs.adxcorp.kr/ios/integrate)
* [AD(X) 유니티 SDK 설치 가이드](https://docs.adxcorp.kr/unity/integrate)

### 에어브릿지로 광고 수익 데이터 전송하기

AD(X)에서 발생한 광고 수익 데이터를 에어브릿지로 전송합니다. AD(X) SDK에 광고 수익 데이터 콜백을 설정합니다. 해당 콜백을 활용하여 광고 수익 데이터를 에어브릿지 SDK로 전송합니다.

<AccordionGroup>
  <Accordion title="SDK 연동하기 (Android)">
    #### Android SDK

    <CodeGroup>
      ```kotlin Kotlin lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      rewardedAd.setOnPaidEventListener(object : OnPaidEventListener() {
          fun onPaidEvent(ecpm: Double) {
              val revenue = ecpm / 1000
              val adPlatform = "AD(X)"
              val adUnitID = "<ADX_BANNER_AD_UNIT_ID>"
              val adUnitName = "ADX Rewarded Ad"
              val adFormat = "RewardedAd"
              val currency = "USD"

              Airbridge.trackEvent(
                  AirbridgeCategory.AD_IMPRESSION, 
                  mapOf(
                      AirbridgeAttribute.ACTION to adUnitName,
                      AirbridgeAttribute.LABEL to adFormat,
                      AirbridgeAttribute.VALUE to revenue,
                      AirbridgeAttribute.AD_PARTNERS to mapOf(
                          "adx" to mapOf(
                              "ad_platform" to adPlatform,
                              "ad_unit_id" to adUnitID,
                              "ad_unit_name" to adUnitName,
                              "ad_format" to adFormat,
                              "value" to revenue,
                              "currency" to currency
                          )
                      ),
                      AirbridgeAttribute.CURRENCY to currency
                  )
              )
          }
      })
      ```

      ```java Java lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      rewardedAd.setOnPaidEventListener(new OnPaidEventListener() {
          @Override
          public void onPaidEvent(double ecpm) {
              double revenue = ecpm / 1000;
              String adPlatform = "AD(X)";
              String adUnitID = "<ADX_BANNER_AD_UNIT_ID>";
              String adUnitName = "ADX Rewarded Ad";
              String adFormat = "RewardedAd";
              String currency = "USD";

              Airbridge.trackEvent(
                  AirbridgeCategory.AD_IMPRESSION, 
                  new HashMap() {{
                      put(AirbridgeAttribute.ACTION, adUnitName);
                      put(AirbridgeAttribute.LABEL, adFormat);
                      put(AirbridgeAttribute.VALUE, revenue);
                      put(AirbridgeAttribute.AD_PARTNERS, new HashMap() {{
                          put("adx", new HashMap() {{
                              put("ad_platform", adPlatform);
                              put("ad_unit_id", adUnitID);
                              put("ad_unit_name", adUnitName);
                              put("ad_format", adFormat);
                              put("value", revenue);
                              put("currency", currency);
                          }});
                      }});
                      put(AirbridgeAttribute.CURRENCY, currency);
                  }}
              );
          }
      });
      ```
    </CodeGroup>

    #### Android SDK (Deprecated)

    <CodeGroup>
      ```kotlin Kotlin lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      rewardedAd.setOnPaidEventListener(object : OnPaidEventListener() {
          fun onPaidEvent(ecpm: Double) {
              val revenue = ecpm / 1000
              val adPlatform = "AD(X)"
              val adUnitID = "<ADX_BANNER_AD_UNIT_ID>"
              val adUnitName = "ADX Rewarded Ad"
              val adFormat = "RewardedAd"
              val currency = "USD"

              val event = Event("airbridge.adImpression")

              val adx = mutableMapOf<String, Any?>()
              adx["ad_platform"] = adPlatform
              adx["ad_unit_id"] = adUnitID
              adx["ad_unit_name"] = adUnitName
              adx["ad_format"] = adFormat
              adx["value"] = revenue
              adx["currency"] = currency

              val adPartners = mapOf("adx" to adx)
              event.action = adUnitName
              event.label = adFormat
              event.value = revenue
              event.semanticAttributes = mutableMapOf(
                  "adPartners" to adPartners,
                  "currency" to currency
              )

              Airbridge.trackEvent(event)
          }
      })
      ```

      ```java Java lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      rewardedAd.setOnPaidEventListener(new OnPaidEventListener() {
          @Override
          public void onPaidEvent(double ecpm) {
              double revenue = ecpm / 1000;
              String adPlatform = "AD(X)";
              String adUnitID = "<ADX_BANNER_AD_UNIT_ID>";
              String adUnitName = "ADX Rewarded Ad";
              String adFormat = "RewardedAd";
              String currency = "USD";

              Event event = Event("airbridge.adImpression");

              Map<String, Object> adx = new HashMap<>();
              adx.put("ad_platform", adPlatform);
              adx.put("ad_unit_id", adUnitID);
              adx.put("ad_unit_name", adUnitName);
              adx.put("ad_format", adFormat);
              adx.put("value", revenue);
              adx.put("currency", currency);

              Map<String, Object> adPartners = new HashMap<>();
              adPartners.put("adx", adx);

              Map<String, Object> semanticAttributes = new HashMap<>();
              semanticAttributes.put("adPartners", adPartners);
              semanticAttributes.put("currency", currency);

              event.setAction(adUnitName);
              event.setLabel(adFormat);
              event.setValue(revenue);
              event.setSemanticAttributes(semanticAttributes);

              Airbridge.trackEvent(event);
          }
      });
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="SDK 연동하기 (iOS)">
    #### iOS SDK

    <CodeGroup>
      ```swift Swift lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      rewardedAd.paidEventHandler = { eCPM in
          let revenue = eCPM / 1000
          let adPlatform = "AD(X)"
          let adUnitID = "<ADX_BANNER_AD_UNIT_ID>"
          let adUnitName = "ADX Rewarded Ad"
          let adFormat = "RewardedAd"
          let currency = "USD"

          Airbridge.trackEvent(
              category: AirbridgeCategory.AD_IMPRESSION,
              semanticAttributes: [
                  AirbridgeAttribute.ACTION: adUnitName,
                  AirbridgeAttribute.LABEL: adFormat,
                  AirbridgeAttribute.VALUE: revenue,
                  AirbridgeAttribute.AD_PARTNERS: [
                      "adx": [
                          "ad_platform": adPlatform,
                          "ad_unit_id": adUnitID,
                          "ad_unit_name": adUnitName,
                          "ad_format": adFormat,
                          "value": revenue,
                          "currency": currency
                      ]
                  ],
                  AirbridgeAttribute.CURRENCY: currency
              ]
          )
      }
      ```

      ```objective-c Objective-C lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      self.rewardedAd.paidEventHandler = ^(double eCPM) {
          double revenue = eCPM / 1000;
          NSString* adPlatform = "AD(X)";
          NSString* adUnitID = "<ADX_BANNER_AD_UNIT_ID>";
          NSString* adUnitName = "ADX Rewarded Ad";
          NSString* adFormat = "RewardedAd";
          NSString* currency = "USD";

          [Airbridge trackEventWithCategory:AirbridgeCategory.AD_IMPRESSION semanticAttributes:@{
              AirbridgeAttribute.ACTION: adUnitName,
              AirbridgeAttribute.LABEL: adFormat,
              AirbridgeAttribute.VALUE: @(revenue),
              AirbridgeAttribute.AD_PARTNERS: @{
                  @"adx": @{
                      @"ad_platform": adPlatform,
                      @"ad_unit_id": adUnitID,
                      @"ad_unit_name": adUnitName,
                      @"ad_format": adFormat,
                      @"value": @(revenue),
                      @"currency": currency
                  }
              },
              @"currency": currency
          }];
      };
      ```
    </CodeGroup>

    #### iOS SDK (Deprecated)

    <CodeGroup>
      ```swift Swift lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      rewardedAd.paidEventHandler = { eCPM in
          let revenue = eCPM / 1000
          let adPlatform = "AD(X)"
          let adUnitID = "<ADX_BANNER_AD_UNIT_ID>"
          let adUnitName = "ADX Rewarded Ad"
          let adFormat = "RewardedAd"
          let currency = "USD"

          let event = ABInAppEvent()
          event?.setCategory("airbridge.adImpression")
          event?.setAction(adUnitName)
          event?.setLabel(adFormat)
          event?.setValue(revenue)
          event?.setSemantics([
              "adPartners": [
                  "adx": [
                      "ad_platform": adPlatform,
                      "ad_unit_id": adUnitID,
                      "ad_unit_name": adUnitName,
                      "ad_format": adFormat,
                      "value": revenue,
                      "currency": currency
                  ]
              ],
            	"currency": currency
          ])

          event?.send()
      }
      ```

      ```objective-c Objective-C lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      self.rewardedAd.paidEventHandler = ^(double eCPM) {
          double revenue = eCPM / 1000;
          NSString* adPlatform = "AD(X)";
          NSString* adUnitID = "<ADX_BANNER_AD_UNIT_ID>";
          NSString* adUnitName = "ADX Rewarded Ad";
          NSString* adFormat = "RewardedAd";
          NSString* currency = "USD";

          ABInAppEvent* event = [[ABInAppEvent alloc] init];
          [event setCategory:@"airbridge.adImpression"];
          [event setAction:adUnitName];
          [event setLabel:adFormat];
          [event setValue:revenue];
          [event setSemantics:@{
              @"adPartners": @{
                  @"adx": @{
                      @"ad_platform": adPlatform,
                      @"ad_unit_id": adUnitID,
                      @"ad_unit_name": adUnitName,
                      @"ad_format": adFormat,
                      @"value": @(revenue),
                      @"currency": currency
                  }
              },
              @"currency": currency
          }];

          [event send];
      };
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="SDK 연동하기 (Unity)">
    #### Unity SDK

    <CodeGroup>
      ```c# C# lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      rewardedAd.OnPaidEvent += RewardedAd_OnPaidEvent;

      void RewardedAd_OnPaidEvent(double ecpm)
      {
          var revenue = ecpm / 1000f;
          var adPlatform = "AD(X)";
          var adUnitID = "<ADX_BANNER_AD_UNIT_ID>";
          var adUnitName = "ADX Rewarded Ad";
          var adFormat = "RewardedAd";
          var currency = "USD";

          Airbridge.TrackEvent(
              category: AirbridgeCategory.AD_IMPRESSION,
              semanticAttributes: new Dictionary<string, object>()
              {
                  { AirbridgeAttribute.ACTION, adUnitName },
                  { AirbridgeAttribute.LABEL, adFormat },
                  { AirbridgeAttribute.VALUE, revenue },
                  {
                      AirbridgeAttribute.AD_PARTNERS, new Dictionary<string, object>()
                      {
                          {
                              "adx", new Dictionary<string, object>()
                              {
                                  { "ad_platform", adPlatform },
                                  { "ad_unit_id", adUnitID },
                                  { "ad_unit_name", adUnitName },
                                  { "ad_format", adFormat },
                                  { "value", revenue },
                                  { "currency", currency }
                              }
                          }
                      }
                  },
                  { AirbridgeAttribute.CURRENCY, currency }
              }
          );
      }
      ```
    </CodeGroup>

    #### Unity SDK (Deprecated)

    <CodeGroup>
      ```c# C# lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
      rewardedAd.OnPaidEvent += RewardedAd_OnPaidEvent;

      void RewardedAd_OnPaidEvent(double ecpm)
      {
          var revenue = ecpm / 1000f;
          var adPlatform = "AD(X)";
          var adUnitID = "<ADX_BANNER_AD_UNIT_ID>";
          var adUnitName = "ADX Rewarded Ad";
          var adFormat = "RewardedAd";
          var currency = "USD";

          AirbridgeEvent @event = new AirbridgeEvent("airbridge.adImpression");

          var adx = new Dictionary<string, object>();
          adx["ad_platform"] = adPlatform;
          adx["ad_unit_id"] = adUnitID;
          adx["ad_unit_name"] = adUnitName;
          adx["ad_format"] = adFormat;
          adx["value"] = revenue;
          adx["currency"] = currency;

          var adPartners = new Dictionary<string, object>();
          adPartners["adx"] = adx;

          @event.SetAction(adUnitName);
          @event.SetLabel(adFormat);
          @event.SetValue(revenue);
          @event.AddSemanticAttribute("adPartners", adPartners);
          @event.AddSemanticAttribute("currency", currency);

          AirbridgeUnity.TrackEvent(@event);
      }
      ```
    </CodeGroup>
  </Accordion>
</AccordionGroup>

<link rel="alternate" hrefLang="en" href="https://help.airbridge.io/en/developers/ad-x-ad-revenue-integration" />

<link rel="alternate" hrefLang="ko" href="https://help.airbridge.io/ko/developers/ad-x-ad-revenue-integration" />
