ADX Library
  • ADXLibrary
  • Android
    • Integrate
    • SDK Integration
      • Initialize
      • Ad Formats
        • Banner Ad
        • Interstitial Ad
        • Native Ad
        • Rewarded Ad
          • AD(X)
          • AdMob
      • Ad Error
      • Ad Revenue
        • Banner Ad
        • Interstitial Ad
        • Native Ad
        • Rewarded Ad
      • Sample Application
    • Targeting Android 12
    • Change log
  • iOS
    • Integrate
    • SDK Integration
      • Initialize
      • Ad Formats
        • Banner Ad
        • Interstitial Ad
        • Native Ad
        • Rewarded Ad
          • AD(X)
          • AdMob
      • Ad Error
      • Ad Revenue
        • Banner Ad
        • Interstitial Ad
        • Native Ad
        • Rewarded Ad
      • Sample Application
    • Supporting iOS 14+
      • App Tracking Transparency
      • SKAdNetwork ID List
    • Change log
  • Unity
    • Integrate
    • SDK Integration
      • Initialize
      • Ad Formats
        • Banner Ad
        • Interstitial Ad
        • Rewarded Ad
          • AD(X)
          • AdMob (ADX v2.4.0 미만)
          • AdMob (ADX v2.4.0 이상)
      • Ad Error
      • Ad Revenue
        • Banner Ad
        • Interstitial Ad
        • Rewarded Ad
      • Sample Application
    • Change log
  • Flutter
    • Integrate
    • SDK Integration
      • Initialize
      • Ad Formats
        • Banner Ad
        • Interstitial Ad
        • Rewarded Ad
      • Sample Application
    • Change log
  • Appendix
    • SSV Callback (Server-Side Verification)
    • UMP (User Messaging Platform)
Powered by GitBook
On this page
  • 1. 기본 요건
  • 2. 구현
  • 3. Callback
  • 4. Ad Revenue (OnPaidEvent)
  • 5. SSV (Server-side verification) 설정

Was this helpful?

  1. Android
  2. SDK Integration
  3. Ad Formats
  4. Rewarded Ad

AD(X)

PreviousRewarded AdNextAdMob

Last updated 9 months ago

Was this helpful?

1. 기본 요건

  • 를 프로젝트에 추가합니다.

  • Rewarded Ad용으로 발급받은 Ad Unit ID를 사용합니다.

  • 광고를 요청하기 전에 를 먼저 진행합니다.

    • SDK 초기화는 앱 실행 시 한 번만 호출하여 주시고, 광고 요청은 초기화가 완료된 후에 이뤄져야 합니다.

2. 구현

  1. RewardedAd를 인스턴스화하고 RewardedAdListener를 추가합니다.

  2. loadAd()를 호출하여 광고를 로드합니다.

  3. 광고 로드가 완료되어 onAdLoaded() callback을 받은 후 show()를 하거나, isLoaded()로 표시할 광고가 있는지 확인 후, show() 로 광고를 표시합니다.

  4. 노출 종료 시 onDestroy()에서 RewardedAd의 destroy()를 호출하여 RewardedAd를 제거합니다.

public class RewardedAdActivity extends AppCompatActivity {
    private com.adxcorp.ads.RewardedAd rewardedAd;
    
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        rewardedAd = new RewardedAd(this, "<REWARDED_AD_UNIT_ID>");
        rewardedAd.setRewardedAdListener(new RewardedAd.RewardedAdListener() {
            @Override
            public void onAdLoaded() {
            }

            @Override
            public void onAdError(int errorCode) {
            }

            @Override
            public void onAdClicked() {
            }

            @Override
            public void onAdImpression() {
            }

            @Override
            public void onAdClosed() {
            }

            @Override
            public void onAdRewarded() {
            }

            @Override
            public void onAdFailedToShow() {
            }
        });

        rewardedAd.loadAd();
    }
    
    void show() {
        if (rewardedAd != null && rewardedAd.isLoaded()) {
            rewardedAd.show();
        }
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
    
        if (rewardedAd != null) {
            rewardedAd.destroy();
            rewardedAd = null;
        }
    }
}
class RewardedAdActivity : AppCompatActivity() {

    private var rewardedAd: RewardedAd? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_fullscreen)

        rewardedAd = RewardedAd(this, "<REWARDED_AD_UNIT_ID>")
        rewardedAd?.setRewardedAdListener(object : RewardedAd.RewardedAdListener {
            override fun onAdLoaded() {
            }

            override fun onAdError(errorCode: Int) {
            }

            override fun onAdClicked() {
            }

            override fun onAdImpression() {
            }

            override fun onAdClosed() {
            }

            override fun onAdRewarded() {
            }

            override fun onAdFailedToShow() {
            }
        })
        
        rewardedAd?.loadAd()
    }
    
    fun show() {
        if (rewardedAd?.isLoaded == true) {
            rewardedAd!!.show()
        }
    }

    override fun onDestroy() {
        super.onDestroy()

        rewardedAd?.destroy()
        rewardedAd = null
    }
}

3. Callback

RewardedAd의 RewardedAdListener를 설정하여 특정 이벤트를 수신할 수 있습니다. 필요에 따라 구현해주세요.

rewardedAd.setRewardedAdListener(new RewardedAd.RewardedAdListener() {
    @Override
    public void onAdLoaded() {
    }
    
    @Override
    public void onAdError(int errorCode) {
    }
    
    @Override
    public void onAdClicked() {
    }
    
    @Override
    public void onAdImpression() {
    }
    
    @Override
    public void onAdClosed() {
    }
    
    @Override
    public void onAdRewarded() {
    }
    
    @Override
    public void onAdFailedToShow() {
    }
});
rewardedAd?.setRewardedAdListener(object : RewardedAd.RewardedAdListener {
    override fun onAdLoaded() {
    }

    override fun onAdError(errorCode: Int) {
    }

    override fun onAdClicked() {
    }

    override fun onAdImpression() {
    }

    override fun onAdClosed() {
    }

    override fun onAdRewarded() {
    }

    override fun onAdFailedToShow() {
    }
})

4. Ad Revenue (OnPaidEvent)

  • 광고 노출이 발생동안 예상되는 광고 수익을 받아볼 수 있습니다.

  • 이는 미디에이션 설정 과정에서 수동적으로 설정한 값과 정확한 값이 섞여 있어서 예상 값으로 사용하시는 것을 권장드립니다.

  • ecpm의 currency는 USD입니다.

  • 아래와 같이 OnPaidEvent 콜백을 등록하여 사용하시면 됩니다.

rewardedAd.setOnPaidEventListener(new OnPaidEventListener() {
    @Override
    public void onPaidEvent(double ecpm) {
        /* Firebase Analytics 샘플
        double revenue = ecpm / 1000;

        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
        Bundle params = new Bundle();
        params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "AD(X)");
        params.putString(FirebaseAnalytics.Param.AD_FORMAT, "RewardedAd");
        params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, "ADX Rewarded Ad");
        params.putDouble(FirebaseAnalytics.Param.VALUE, revenue);
        params.putString(FirebaseAnalytics.Param.CURRENCY, "USD");
        mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params);
        */
        
        /* AppsFlyer 샘플
        double revenue = ecpm / 1000;

        Map<String, String> customParams = new HashMap<>();
        customParams.put(Scheme.AD_TYPE, "RewardedAd");
        customParams.put("ad_unit_name", "ADX Rewarded Ad");

        AppsFlyerAdRevenue.logAdRevenue(
              "AD(X)",
              MediationNetwork.customMediation,
              Currency.getInstance(Locale.US),
              revenue,
              customParams
        );
        */
    }
});
rewardedAd.setOnPaidEventListener(object : OnPaidEventListener() {
    fun onPaidEvent(ecpm: Double) {
        /* Firebase Analytics 샘플
        val revenue: Double = ecpm / 1000

        firebaseAnalytics = Firebase.analytics
        firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) {
            param(FirebaseAnalytics.Param.AD_PLATFORM, "AD(X)")
            param(FirebaseAnalytics.Param.AD_UNIT_NAME, "ADX Rewarded Ad")
            param(FirebaseAnalytics.Param.AD_FORMAT, "RewardedAd")
            param(FirebaseAnalytics.Param.VALUE, revenue)
            param(FirebaseAnalytics.Param.CURRENCY, "USD")
        }
        */
        
        /* AppsFlyer 샘플
        val revenue: Double = ecpm / 1000

        val customParams: MutableMap<String, String> = HashMap()
        customParams[Scheme.AD_TYPE] = "RewardedAd"
        customParams["ad_unit_name"] = "ADX Rewarded Ad"
        
        AppsFlyerAdRevenue.logAdRevenue(
            "AD(X)",
            MediationNetwork.customMediation,
            Currency.getInstance(Locale.US),
            revenue,
            customParams
        )
        */
    }
})

5. SSV (Server-side verification) 설정

  • SSV 설정은 선택사항으로 필요한 경우에만 설정하여 사용할 수 있습니다.

  • SSV 설정은 보상 이벤트가 발생될 때 개발사에서 등록한 Callback URL을 Server to Server 방식으로 호출을 하기 위한 설정입니다.

  • SSV 설정에 대한 호출 조건은 아래와 같습니다.

    • 대시보드를 통해 Rewarded Video 타입에서 Callback URL 등록이 되어 있어야 합니다.

    • 비디오 시청 완료 후 보상 이벤트가 발생해야 합니다.

    • 필요한 경우 광고 요청 전에 SDK를 통해 User ID 또는 Custom Data 정보를 설정합니다.

  • 클라이언트에서 설정한 User ID 와 Custom Data 정보가 있다면 Callback URL에 포함되어 호출하도록 적용되어 있습니다.

    • (예시) https://callback_url?param=value&userid=<valule>&customdata=<value>

    • 해당 설정은 반드시 광고 요청 전에 호출해야 정상적으로 데이터가 Callback URL에 포함됩니다.

  • SDK v2.2 이상에서 동작하며 이전 버전에서는 동작하지 않습니다.

// SSV 설정 (optional)
rewardedAd.setUserIdForSSV("<USER_ID>");
rewardedAd.setCustomDataForSSV("<CUSTOM_DATA>");

// 광고 요청
rewardedAd.loadAd();
// SSV 설정 (optional)
rewardedAd?.setUserIdForSSV("<USER_ID>")
rewardedAd?.setCustomDataForSSV("<CUSTOM_DATA>")

// 광고 요청
rewardedAd?.loadAd()

AdJust의 광고 매출 데이터 연동을 지원합니다. 상세한 내용은 를 확인 부탁드립니다.

을 참고하여 보상에 대한 검증을 합니다.

AdJust의 AD(X) SDK 연동 가이드
서버측 SSV 콜백 검증
SDK 초기화
ADX Android SDK