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 10 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