보상형 광고
보상형 광고는 사용자가 광고를 시청하면 보상을 받는 인기 있는 전체 화면 광고 형식입니다.
이 광고 유형의 표시는 예를 들어 게임에서 보너스나 추가 생명을 받으려는 사용자에 의해 활성화됩니다.
사용자 동기 부여가 높기 때문에 무료 앱에서 가장 인기 있고 수익성이 높은 광고 형식입니다.
표시 형태
이 가이드는 Compose Multiplatform 앱에 보상형 광고를 통합하는 방법을 설명합니다. 코드 예시와 절차뿐 아니라 형식별 권장 사항과 추가 자료 링크도 포함합니다.
사전 요건
- 빠른 시작에 따라 Yandex Mobile Ads Compose Multiplatform 플러그인을 통합합니다.
- 최신 Yandex Mobile Ads Compose Multiplatform 플러그인 버전을 사용하세요. 미디에이션을 사용하는 경우 최신 통합 빌드 버전도 사용하세요.
구현
보상형 광고 통합의 주요 단계:
- Composable 범위에서
rememberRewardedAdLoader()를 얻습니다. - 코루틴에서
loadAd(AdRequest)로RewardedAd를 로드합니다. - 로드된 광고에
RewardedAdEventListener를 설정해onRewarded에서 보상을 지급합니다. - 사용자가 광고 시청에 동의하면
show()를 호출합니다.
보상형 광고 통합 시 특징
로드 중 예외가 발생하거나 오류 처리에서 실패하면 즉시 새 광고를 다시 로드하지 마세요. 부득이하면 재시도 횟수를 제한하세요. 그러면 제한이 있을 때 끊임없는 실패 요청과 연결 문제를 줄일 수 있습니다.
광고 로드
rememberRewardedAdLoader()와 loadAd를 사용하고, Yandex Advertising Network 인터페이스의 adUnitId가 들어 있는 AdRequest를 전달합니다.
AdRequest로 요청을 확장할 수 있습니다(targeting, parameters, preferredTheme 등). 자세한 내용은 광고 타게팅을 참고하세요.
보상형 광고 로드 예시:
@Composable
fun RewardedBlock(adUnitId: String) {
val loader = rememberRewardedAdLoader()
val scope = rememberCoroutineScope()
var rewardedAd by remember { mutableStateOf<RewardedAd?>(null) }
var isLoading by remember { mutableStateOf(false) }
Button(
onClick = {
isLoading = true
scope.launch {
try {
rewardedAd = loader.loadAd(AdRequest(adUnitId = adUnitId))
} catch (e: Exception) {
// Ad failed to load with AdRequestError.
// Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged.
}
isLoading = false
}
},
enabled = !isLoading,
) {
Text(if (isLoading) "로드 중..." else "보상형 로드")
}
Button(
onClick = {
rewardedAd?.show()
rewardedAd = null
},
enabled = rewardedAd != null,
) {
Text("보상형 표시")
}
}
디버깅 시 adUnitId로 'demo-rewarded-yandex'를 사용할 수 있습니다.
광고 표시
보상형 광고는 사용자가 광고를 시청한 뒤 보상을 받는 인센티브 형식입니다. 보상은 게임에서 추가 생명이나 다음 레벨 진행 등이 될 수 있으며, 형식은 앱 수준에서 정합니다.
보상형 광고 생명 주기를 추적하고 보상을 지급하려면 show() 전에 RewardedAd 인스턴스에 RewardedAdEventListener를 설정하세요.
val ad = rewardedAd ?: return
ad.setAdEventListener(
object : RewardedAdEventListener {
override fun onAdShown() {
// Called when an ad is shown.
}
override fun onAdFailedToShow(adError: AdError) {
// Called when an ad failed to show.
}
override fun onAdDismissed() {
// Called when ad is dismissed. Preload the next rewarded ad if appropriate.
}
override fun onAdClicked() {
// Called when a click is recorded for an ad.
}
override fun onAdImpression(impressionData: ImpressionData?) {
// Called when an impression is recorded for an ad.
}
override fun onRewarded(reward: Reward) {
// Grant currency: reward.type, reward.amount
}
},
)
ad.show()
리소스 해제
onAdDismissed 또는 onAdFailedToShow 이후에는 광고 객체 참조를 버리고, 필요하면 다음 소재 로드를 시작하세요.
보상형 광고 통합 테스트
광고 테스트를 위한 데모 광고 단위 사용
보상형 광고 통합 및 앱 자체를 테스트하기 위해 테스트 광고를 사용하는 것이 좋습니다.
모든 광고 요청에 대해 테스트 광고가 반환되도록 보장하기 위해 특별한 데모 광고 배치 ID를 생성했습니다. 광고 통합을 확인하는 데 사용하세요.
데모 adUnitId: demo-rewarded-yandex.
Важно
앱을 스토어에 게시하기 전에 데모 배치 ID를 Yandex Advertising Network 인터페이스에서 획득한 실제 ID로 교체해야 합니다.
사용 가능한 데모 광고 배치 ID 목록은 테스트용 데모 광고 단위 섹션에서 찾을 수 있습니다.
광고 통합 테스트
SDK의 내장 분석기를 사용하여 보상형 광고 통합을 확인할 수 있습니다.
이 도구는 보상형 광고가 제대로 통합되었는지 확인하고 로그에 상세한 보고서를 출력합니다. 보고서를 보려면 Android 앱 디버깅을 위한 Logcat 도구에서 "YandexAds" 키워드를 검색하세요.
adb logcat -v brief '*:S YandexAds'
통합에 성공하면 다음 메시지가 표시됩니다.
adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type rewarded was integrated successfully
보상형 광고 통합에 문제가 있는 경우, 문제에 대한 상세한 보고서와 해결 방법에 대한 권장 사항을 받게 됩니다.
데모 광고 유닛으로 광고 테스트
광고 통합 및 앱 자체를 테스트하기 위해 테스트 광고를 사용하는 것이 좋습니다.
모든 광고 요청에 대해 테스트 광고가 반환되도록 보장하기 위해 특별한 데모 광고 배치 ID를 생성했습니다. 광고 통합을 확인하는 데 사용하세요.
데모 adUnitId: demo-rewarded-yandex.
Важно
앱을 스토어에 게시하기 전에 데모 배치 ID를 Yandex Advertising Network 인터페이스에서 획득한 실제 ID로 교체해야 합니다.
사용 가능한 데모 광고 배치 ID 목록은 테스트용 데모 광고 단위 섹션에서 찾을 수 있습니다.
광고 통합 검증
네이티브 콘솔 도구를 사용하여 광고 통합을 테스트할 수 있습니다.
자세한 로그를 보려면 YMAMobileAds 클래스의 enableLogging 메서드를 호출하세요.
YMAMobileAds.enableLogging()
SDK 로그를 보려면 콘솔 도구로 이동하여 Subsystem = com.mobile.ads.ads.sdk를 설정하세요. 카테고리와 오류 수준별로 로그를 필터링할 수도 있습니다.
광고 통합에 문제가 있는 경우, 문제에 대한 상세한 보고서와 해결 방법에 대한 권장 사항을 받게 됩니다.
팁
광고 사전 로드
광고 로딩은 모바일 미디에이션에 연결된 광고 네트워크 수와 사용자의 인터넷 속도에 따라 몇 초가 걸릴 수 있습니다. 광고를 표시하기 전에 미리 로드하는 것을 권장합니다.
미리 loadAd를 호출해 적절한 시점에 표시하세요.
onAdDismissed에 다음 광고 로드를 연결하세요.
표시될 가능성이 낮은 너무 많은 화면에 광고를 캐시하면 광고 효과가 떨어질 수 있습니다. 예를 들어 사용자가 세션당 2~3개의 게임 레벨을 완료하는 경우, 6~7개의 화면에 광고를 캐시하면 안 됩니다. 광고 가시성이 감소할 수 있으며, 광고 시스템이 앱의 우선순위를 낮출 수 있습니다.
앱에 적절한 균형을 찾을 수 있도록 Yandex Advertising Network 인터페이스에서 "노출 비율" 또는 "가시적 노출 비율" 지표를 추적하세요. 20% 미만인 경우, 캐싱 알고리즘을 수정해야 할 가능성이 있습니다. 노출 비율이 높을수록 효과가 큽니다.
추가 자료
-
GitHub 링크.