안드로이드의 보상형 광고 연동

Unity LevelPlay 보상형 광고는 사용자가 시작하는 광고 단위로, 앱 내 보상을 대가로 전체 화면 광고에 참여할 기회를 제공하여 긍정적인 사용자 경험을 유지하면서 참여도를 높입니다.

Before you start
  • ironSource SDK를 애플리케이션에 올바르게 연동했는지 확인하세요. 연동 방법은 여기에 설명되어 있습니다.
  • LevelPlay 초기화 API를 사용하여 SDK를 초기화했는지 확인하세요.
  • AdUnitID는 LevelPlay 대시보드에서 찾을 수 있습니다. 여기에서 자세히 알아보세요.
  • 이 문서는 SDK 8.5.0 이상 버전에 해당합니다. 레거시 보상형 API(SDK 8.5.0 이하)에 대한 문서는 여기에서 찾을 수 있습니다.

보상형 광고 객체 생성

보상형 광고 객체 생성은 onInitSuccess 콜백을 수신한 후에 수행해야 합니다.

이 객체는 세션 내내 여러 번의 로드와 표시를 처리할 수 있는 재사용 가능한 인스턴스입니다. 일단 생성되면 동일한 광고 단위의 광고를 로드하고 표시하는 데 사용해야 합니다.

더 고급 구현을 위해 필요한 경우 여러 개의 보상형 광고 객체를 생성할 수도 있습니다.

LevelPlayRewardedAd mRewardedAd = new LevelPlayRewardedAd("adUnitId");
val mRewardedAd = LevelPlayRewardedAd("adUnitId")

보상형 광고 리스너 설정

코드에 LevelPlayRewardedAdListener를 구현하여 광고 전송에 대한 정보를 받으세요. 

  • 보상형 광고를 로드하기 전에 리스너를 설정하는 것을 권장합니다.
  • 각 보상형 광고에는 고유한 리스너 구현이 있어야 합니다.
  • 콜백은 메인 스레드에서 실행됩니다.
// Create the Rewarded ad object
LevelPlayRewardedAd mRewardedAd = new LevelPlayRewardedAd("adUnitId");
mRewardedAd.setListener(new LevelPlayRewardedAdListener() {
    @Override
    public void onAdLoaded(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was loaded successfully
    }
    @Override
    public void onAdLoadFailed(LevelPlayAdError levelPlayAdError) {
        // Ad load failed 
    }
    @Override
    public void onAdDisplayed(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was displayed and visible on screen
    }

    @Override 
    public void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) {
        // Ad reward received 
    }
    @Override
    public void onAdDisplayFailed(LevelPlayAdError levelPlayAdError, LevelPlayAdInfo levelPlayAdInfo) {
        // Ad fails to be displayed
        // Optional
    }
    @Override
    public void onAdClicked(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was clicked
        // Optional
    }
    @Override
    public void onAdClosed(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was closed
        // Optional
    }
    @Override
    public void onAdInfoChanged(LevelPlayAdInfo levelPlayAdInfo) {
        // Called after the ad info is updated. Available when another Rewarded ad has loaded, and includes a higher CPM/Rate
        // Optional
    }
});
// Create the Rewarded ad object 
val mRewardedAd = LevelPlayRewardedAd("adUnitId")
mRewardedAd.setListener(object : LevelPlayRewardedAdListener {
    override fun onAdLoaded(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was loaded successfully
    }
    override fun onAdLoadFailed(levelPlayAdError: LevelPlayAdError) {
        // Ad load failed
    }
    override fun onAdDisplayed(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was displayed and visible on screen
    }

    override fun onAdRewarded(reward: LevelPlayReward, adInfo: LevelPlayAdInfo) {
        // Ad reward received 
    }
    override fun onAdDisplayFailed(levelPlayAdError: LevelPlayAdError, levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad fails to be displayed
        // Optional
    }
    override fun onAdClicked(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was clicked
        // Optional
    }
    override fun onAdClosed(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was closed
        // Optional
    }
    override fun onAdInfoChanged(levelPlayAdInfo: LevelPlayAdInfo) {
        // Called after the ad info is updated. Available when another Rewarded ad has loaded, and includes a higher CPM/Rate
        // Optional
    }
})

LevelPlay 광고 정보

광고 정보

LevelPlayAdInfo 파라미터에는 로드된 광고에 대한 정보가 포함됩니다.

구현 방법 및 사용 가능한 필드에 대해 여기에서 자세히 알아보세요.

보상형 광고 로드

보상형 광고를 로드하려면 loadAd를 사용하세요.

mRewardedAd.loadAd();
mRewardedAd.loadAd()

보상형 광고 표시

LevelPlayRewardedAdListener API를 사용하여 onAdLoaded 콜백을 받은 후 보상형 광고를 표시합니다.

  • Activity를 공유해야 합니다.
  • 게재위치를 사용하는 경우, 아래 게재위치 섹션에 표시된 것처럼 showAd API에 게재위치 이름을 전달합니다.
  • 광고가 사용자에게 성공적으로 표시되면 로드 단계를 반복하여 다른 광고를 로드할 수 있습니다. 
public void showRewardedAd() {
    // Check that ad is ready
    if (mRewardedAd.isAdReady()) {
        // Show ad 
        mRewardedAd.showAd(this);
    }
}
fun showRewardedAd() {
    // Check that ad is ready
    if (mRewardedAd.isAdReady()) {
        // Show ad
        mRewardedAd.showAd(this)
    }
}

광고 준비 완료 확인

표시 실패를 방지하고 광고가 올바르게 표시될 수 있도록 showAd API를 호출하기 전에 다음 API를 사용하는 것을 권장합니다.

isAdReady – 광고가 성공적으로 로드되었고 광고 단위가 캡핑(capping)되지 않은 경우 true를, 그렇지 않으면 false를 반환합니다.

isPlacementCapped – 유효한 게재위치가 캡핑된 경우 true를 반환합니다. 게재위치가 유효하지 않거나 캡핑되지 않은 경우 이 API는 false를 반환합니다.

// Check that ad is ready and that the placement is not capped 
if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
    mRewardedAd.showAd(this, placementName);
}
// Check that ad is ready and that the placement is not capped
if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
    mRewardedAd.showAd(this, placementName)
}

게재위치

LevelPlay 대시보드에서 보상형 광고에 대한 게재위치 페이스 조절 및 캡핑을 지원합니다.

보상형 광고에 게재위치가 설정된 경우, showAd 메서드를 호출하여 특정 게재위치에 광고를 게재하세요.

public void showRewardedAdWithPlacement() {
    // Check that ad is ready and that the placement is not capped 
    if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
        // Show ad with placement 
        mRewardedAd.showAd(this, placementName);
    }
}
fun showRewardedAdWithPlacement(placementName: String) {
    // Check that ad is ready and that the placement is not capped
    if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
        // Show ad with placement
        mRewardedAd.showAd(this, placementName)
    }
}

사용자에게 보상 지급

LevelPlay SDK는 사용자가 비디오를 성공적으로 완료할 때마다 onAdRewarded를 호출합니다.

onAdRewardedonAdClosed는 비동기적으로 처리됩니다. onAdRewardedonAdClosed 이후에 호출되는 경우에도 보상을 지급하도록 리스너를 설정해야 합니다.

@override
public void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) {
    // Implement logic to grant the reward to the user
    String name = reward.getName(); 
    int amount = reward.getAmount();
}
override fun onAdRewarded(reward: LevelPlayReward, adInfo: LevelPlayAdInfo) {
    // Implement logic to grant the reward to the user
    val name: String = reward.name 
    val amount: Int = reward.amount
}

보상형 광고 전체 구현 예시

public class RewardedAdActivity extends Activity implements LevelPlayRewardedAdListener {
    private LevelPlayRewardedAd mRewardedAd;
    void createRewardedAd() {
        mRewardedAd = new LevelPlayRewardedAd("adUnitId");
        mRewardedAd.setListener(this);
    }
    void loadRewardedAd() {
        // Load or reload the ad
        mRewardedAd.loadAd();
    }
    void showRewardedAd() {
        if(mRewardedAd.isAdReady()) {
    	      mRewardedAd.showAd(this);
        }
    }
    void showRewardedAd(@NonNull String placementName) {
        // Check that ad is ready and that the placement is not capped 
        if(mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
    	      mRewardedAd.showAd(this, placementName);
        }
    }
    // LevelPlayRewardedAdListener methods
    @Override
    public void onAdLoaded(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdLoadFailed(@NonNull LevelPlayAdError error) {}
    @Override
    public void onAdDisplayed(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdClosed(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdClicked(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdDisplayFailed(@NonNull LevelPlayAdError error, @NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdInfoChanged(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) {}
}
class RewardedAdActivity : Activity(), LevelPlayRewardedAdListener {
    private lateinit var mRewardedAd: LevelPlayRewardedAd
    fun createRewardedAd() {
        mRewardedAd = LevelPlayRewardedAd("adUnitId")
        mRewardedAd.setListener(this)
    }
    fun loadRewardedAd() {
        mRewardedAd.loadAd()
    }
    fun showRewardedAd() {
        if (mRewardedAd.isAdReady()) {
            mRewardedAd.showAd(this)
        }
    }
    fun showRewardedAd(placementName: String) {
        // Check that ad is ready and that the placement is not capped 
        if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
            mRewardedAd.showAd(this, placementName)
        }
    }
    // LevelPlayRewardedAdListener methods
    override fun onAdLoaded(adInfo: LevelPlayAdInfo) {}
    override fun onAdLoadFailed(error: LevelPlayAdError) {}
    override fun onAdInfoChanged(adInfo: LevelPlayAdInfo) {}
    override fun onAdDisplayed(adInfo: LevelPlayAdInfo) {}
    override fun onAdDisplayFailed(error: LevelPlayAdError, adInfo: LevelPlayAdInfo) {}
    override fun onAdClicked(adInfo: LevelPlayAdInfo) {}
    override fun onAdClosed(adInfo: LevelPlayAdInfo) {}
    override fun onAdRewarded(reward: LevelPlayReward, adInfo: LevelPlayAdInfo) {}
}

LevelPlay 미디에이션 데모 앱

연동 데모 애플리케이션은 앱에 보상형 광고 단위 API를 연동하는 방법을 보여줍니다.

Android 데모 애플리케이션 다운로드

완료!
이제 애플리케이션에서 보상형 광고를 제공할 모든 준비가 되었습니다. 저희의 연동 테스트 Suite로 연동을 확인하세요.


다음 단계는?
저희의 연동 가이드를 따라 추가 보상형 광고 네트워크를 연동하거나 다른 광고 형식을 구성하세요: