안드로이드의 보상형 광고 연동
Unity LevelPlay 보상형 광고는 사용자가 시작하는 광고 단위로, 앱 내 보상을 대가로 전체 화면 광고에 참여할 기회를 제공하여 긍정적인 사용자 경험을 유지하면서 참여도를 높입니다.
보상형 광고 객체 생성
보상형 광고 객체 생성은 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를 사용하세요.
보상형 광고 표시
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를 호출합니다.
onAdRewarded와 onAdClosed는 비동기적으로 처리됩니다. onAdRewarded가 onAdClosed 이후에 호출되는 경우에도 보상을 지급하도록 리스너를 설정해야 합니다.
@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를 연동하는 방법을 보여줍니다.
완료!
이제 애플리케이션에서 보상형 광고를 제공할 모든 준비가 되었습니다. 저희의 연동 테스트 Suite로 연동을 확인하세요.