안드로이드의 인터스티셜(전면) 광고 연동
유니티 레벨플레이 인터스티셜(전면) 광고는 전체화면 광고 유닛으로, 보통 앱의 생명주기 중 자연스러운 장면 전환 시점에 게재되는 광고입니다.
인터스티셜 광고 객체 생성
인터스티셜 광고 객체 생성은 OnInitSuccess 콜백 메시지 수신후에 수행해야 합니다.
인터스티셜 광고 객체는 재사용 가능한 인스턴스로 세션 내에서 다수의 광고 로드 및 송출을 처리할 수 있습니다. 생성된 객체는 동일한 광고 유닛 상의 광고 로드 및 송출에 사용됩니다.
좀 더 심화된 구현을 위해, 복수의 인터스티셜 광고 객체를 필요에 따라 생성할 수 있습니다.
LevelPlayInterstitialAd mInterstitialAd = new LevelPlayInterstitialAd("adUnitId");
val mInterstitialAd = LevelPlayInterstitialAd("adUnitId")
인터스티셜 리스너 구현
코드 상에 LevelPlayInterstitialAdListener 객체를 구현하여 광고 수신 및 송출 관련 이벤트를 수신합니다.
- 인터스티셜 광고 로드 전에 리스너를 설정하는 것이 좋습니다.
- 각 인터스티셜 광고 객체마다 리스너가 별도로 구현되어야 합니다.
- 콜백 메서드는 메인스레드에서 실행됩니다.
// Create the interstitial ad object
LevelPlayInterstitialAd mInterstitialAd = new LevelPlayInterstitialAd("adUnitId");
mInterstitialAd.setListener(new LevelPlayInterstitialAdListener() {
@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 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 interstitial ad has loaded, and includes a higher CPM/Rate
// Optional
}
});
// Create the interstitial ad object
val mInterstitialAd = LevelPlayInterstitialAd("adUnitId")
mInterstitialAd.setListener(object : LevelPlayInterstitialAdListener {
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 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 interstitial ad has loaded, and includes a higher CPM/Rate
// Optional
}
})
레벨플레이 Ad Info
LevelPlayAdInfo 파라미터에는 로드된 광고의 정보가 포함됩니다.
LevelPlayAdInfo 클래스의 구현 및 사용가능할 필드들에 대한 더 자세한 설명은 여기를 참고해 주세요.
인터스티셜 광고 로드
loadAd API를 사용해 인터스티셜 광고를 로드합니다.
인터스티셜 광고 표시(송출)
LevelPlayInterstitialAdListener API를 통해 onAdLoaded 콜백을 수신한 다음 인터스티셜 광고를 송출합니다.
- 송출 시 showAd API에 Activity 객체를 전달해 공유해야 합니다.
- 플레이스먼트를 사용하려면, 하기 Placements 섹션에서 설명된 것과 같이 플레이스먼트명을 showAd API의 인자로 전달합니다.
- 광고가 사용자에게 성공적으로 표출된 후, 로딩 과정을 반복하여 다른 광고를 로드할 수 있습니다.
public void showInterstitialAd() {
// Check that ad is ready
if (mInterstitialAd.isAdReady()) {
// Show ad
mInterstitialAd.showAd(this);
}
}
fun showInterstitialAd() {
// Check that ad is ready
if (mInterstitialAd.isAdReady()) {
// Show ad
mInterstitialAd.showAd(this)
}
}
광고 준비 상태 확인하기
광고 송출 실패를 피하고 광고가 올바르게 표출되게 하기위해서는, showAd API 호출 전에 아래의 API를 사용하시는 것이 좋습니다.
isAdReady – 광고가 성공적으로 로드되었고 송출제한이 없는 경우 true를 반환. 그렇지 않은 경우 false를 반환.
isPlacementCapped – 플레이스먼트가 유효하고 송출제한이 걸려있는 경우 true를 반환. 플레이스먼트명이 유효하지 않거나 송출제한이 걸려있지 않은 경우에는 API에서 false가 반환됨.
// Check that ad is ready and that the placement is not capped
if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
mInterstitialAd.showAd(this, placementName);
}
// Check that ad is ready and that the placement is not capped
if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
mInterstitialAd.showAd(this, placementName)
}
플레이스먼트
레벨플레이에서는 대시보드상에서 인터스티셜 광고에 플레이스먼트별 송출 횟수 제한 및 빈도 제한 설정할 수 있는 기능을 지원합니다.
showAd 메서드로 특정 플레이스먼트로 광고가 송출되도록 해당 플레이스먼트 명을 인자로 전달합니다.
public void showInterstitialAdWithPlacement() {
// Check that ad is ready and that the placement is not capped
if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
// Show ad with placement
mInterstitialAd.showAd(this, placementName);
}
}
fun showInterstitialAdWithPlacement(placementName: String) {
// Check that ad is ready and that the placement is not capped
if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
// Show ad with placement
mInterstitialAd.showAd(this, placementName)
}
}
인터스티셜 광고 연동 전체 예제
public class InterstitialAdActivity extends Activity implements LevelPlayInterstitialAdListener {
private LevelPlayInterstitialAd mInterstitialAd;
void createInterstitialAd() {
mInterstitialAd = new LevelPlayInterstitialAd("adUnitId");
mInterstitialAd.setListener(this);
}
void loadInterstitialAd() {
// Used to load or reload the ad
mInterstitialAd.loadAd();
}
void showInterstitialAd() {
if (mInterstitialAd.isAdReady()) {
mInterstitialAd.showAd(this);
}
}
void showInterstitialAd(@NonNull String placementName) {
// Check that ad is ready and that the placement is not capped
if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
mInterstitialAd.showAd(this, placementName);
}
}
// LevelPlayInterstitialAdListener 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) {}
}
class InterstitialAdActivity : Activity(), LevelPlayInterstitialAdListener {
private lateinit var mInterstitialAd: LevelPlayInterstitialAd
fun createInterstitialAd() {
mInterstitialAd = LevelPlayInterstitialAd("adUnitId")
mInterstitialAd.setListener(this)
}
fun loadInterstitialAd() {
mInterstitialAd.loadAd()
}
fun showInterstitialAd() {
if (mInterstitialAd.isAdReady()) {
mInterstitialAd.showAd(this)
}
}
fun showInterstitialAd(placementName: String) {
// Check that ad is ready and that the placement is not capped
if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
mInterstitialAd.showAd(this, placementName)
}
}
// LevelPlayInterstitialAdListener 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) {}
}
레벨플레이 미디에이션 데모 앱
연동 데모 앱으로 인터스티셜 Ad Unit API를 사용해 앱에 연동하는 방법을 참고하실 수 있습니다.
완료했습니다!
이제 앱에서 인터스티셜 광고를 앱에서 송출할 수 있습니다! 연동이 잘 되었는지를 연동 Test Suite를 사용해 검증하세요.
아래의 연동 가이드 문서를 따라서 추가로 인터스티셜 광고 네트워크를 연동하거나, 다른 포맷 광고를 연동해 설정해 보세요: