보상형 동영상 광고는 동영상 광고를 끝까지 시청한 사용자에게 인앱 보상을 제공하는 전체 화면 동영상 광고입니다. 이 가이드에는 AdMob의 보상형 광고를 Android 앱에 통합하는 방법이 나와 있습니다.
기본 요건
- Google 모바일 광고 SDK를 단독으로 또는 Firebase의 일부로 가져오세요.
보상형 동영상 광고 초기화
자바
package ... import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.MobileAds; import com.google.android.gms.ads.reward.RewardedVideoAd; public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener { private RewardedVideoAd mRewardedVideoAd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713"); // Use an activity context to get the rewarded video instance. mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); mRewardedVideoAd.setRewardedVideoAdListener(this); } ... }
Kotlin
package ... import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.MobileAds import com.google.android.gms.ads.reward.RewardedVideoAd class MainActivity : AppCompatActivity(), RewardedVideoAdListener { private lateinit var mRewardedVideoAd: RewardedVideoAd override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713") // Use an activity context to get the rewarded video instance. mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this) mRewardedVideoAd.rewardedVideoAdListener = this } ... }
MobileAds.getRewardedVideoAdInstance()
를
사용하여
RewardedVideoAd
객체를 가져올 수 있습니다.
보상형 동영상 수명 주기 이벤트에 대한 알림을 받으려면
RewardedVideoAdListener
를 구현해야 합니다.
보상형 광고 리스너는
setRewardedVideoAdListener()
메서드를 이용해 설정합니다. 미디에이션 대상인 모든 네트워크의 이벤트를 자동으로 이 리스너에
알립니다. 예를 들면 RewardedVideoAdListener
의 onRewarded()
메서드를
통해 동영상 시청으로 보상을 받는
사용자에 대해
알림을 받을 수 있습니다.
보상형 동영상 광고 요청
자바
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713"); // Use an activity context to get the rewarded video instance. mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); mRewardedVideoAd.setRewardedVideoAdListener(this); loadRewardedVideoAd(); } private void loadRewardedVideoAd() { mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build()); }
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713") // Use an activity context to get the rewarded video instance. mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this) mRewardedVideoAd.rewardedVideoAdListener = this loadRewardedVideoAd() } private fun loadRewardedVideoAd() { mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", AdRequest.Builder().build()) }
RewardedVideoAd
의 싱글톤 설계에 따라 공유 인스턴스에 광고 로드
요청을 보내야 합니다.
동영상이 미리 로드될 수 있도록
최대한 빨리 loadAd()
를
호출하는 것이 좋습니다
(예: 활동의 onCreate()
메서드).
항상 테스트 광고로 테스트
앱을 제작하고 테스트할 때 운영 중인 실제 광고 대신 테스트 광고를 사용하세요. 이렇게 하지 않으면 계정이 정지될 수 있습니다.
테스트 광고를 로드하는 가장 쉬운 방법은 Android 보상형 광고의 테스트 전용 광고 단위 ID를 사용하는 것입니다.
ca-app-pub-3940256099942544/5224354917
이 ID는 모든 요청에 대해 테스트 광고를 반환하도록 특별히 구성되었으며, 코딩, 테스트 및 디버깅 중에 앱에서 자유롭게 사용할 수 있습니다. 앱을 게시하기 전에 이 ID를 자체 광고 단위 ID로 바꿔야 합니다.
모바일 광고 SDK의 테스트 광고가 작동하는 방식을 자세히 알아보려면 테스트 광고를 참고하세요.
이벤트 알림 설정
SDK는 보상형 동영상 광고의
수명 주기에 이벤트에 해당하는 메서드가 있는
RewardedVideoAdListener
인터페이스를 제공합니다. 앱에서 이 인터페이스를 구현하는 클래스를 정의하고,
광고를 로드하기 전에
이 클래스를
setRewardedVideoAdListener
에 전달하세요.
보상형 동영상 광고 초기화의 코드 예에는
클래스가 RewardedVideoAdListener
를 구현했음을 명시하고
RewardedVideoAd
객체에서 리스너를 설정하는 방법이 나와 있습니다.
다음은 리스너 메서드를 구현한 예입니다.
자바
@Override public void onRewarded(RewardItem reward) { Toast.makeText(this, "onRewarded! currency: " + reward.getType() + " amount: " + reward.getAmount(), Toast.LENGTH_SHORT).show(); // Reward the user. } @Override public void onRewardedVideoAdLeftApplication() { Toast.makeText(this, "onRewardedVideoAdLeftApplication", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoAdClosed() { Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoAdFailedToLoad(int errorCode) { Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoAdLoaded() { Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoAdOpened() { Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoStarted() { Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoCompleted() { Toast.makeText(this, "onRewardedVideoCompleted", Toast.LENGTH_SHORT).show(); }
Kotlin
override fun onRewarded(reward: RewardItem) { Toast.makeText(this, "onRewarded! currency: ${reward.type} amount: ${reward.amount}", Toast.LENGTH_SHORT).show() // Reward the user. } override fun onRewardedVideoAdLeftApplication() { Toast.makeText(this, "onRewardedVideoAdLeftApplication", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoAdClosed() { Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoAdFailedToLoad(errorCode: Int) { Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoAdLoaded() { Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoAdOpened() { Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoStarted() { Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoCompleted() { Toast.makeText(this, "onRewardedVideoCompleted", Toast.LENGTH_SHORT).show() }
보상형 동영상 광고 표시
자바
if (mRewardedVideoAd.isLoaded()) { mRewardedVideoAd.show(); }
Kotlin
if (mRewardedVideoAd.isLoaded) { mRewardedVideoAd.show() }
보상형 동영상 광고는 로드가 완료된 다음
게재하는 것이 좋습니다. isLoaded()
메서드가
보상형 동영상 광고 요청이
정상적으로 처리되었는지 알려줍니다.
RewardedVideoAdListener를 이용해 광고 다시 로드
RewardedVideoAdListener
클래스의
onRewardedVideoAdClosed()
메서드를 이용하면 이전 보상형 동영상 광고를 표시한 후에 새 보상형 동영상 광고를
손쉽게 로드할 수 있습니다.
자바
@Override public void onRewardedVideoAdClosed() { // Load the next rewarded video ad. loadRewardedVideoAd(); }
Kotlin
override fun onRewardedVideoAdClosed() { loadRewardedVideoAd() }
수명 주기 이벤트 전달
상위 활동의 수명 주기 이벤트를 RewardedVideoAd
객체에 전달하려면 상위 활동의 onResume()
, onPause()
, onDestroy()
메서드에서
각각 resume()
, pause()
, destroy()
메서드를 호출하세요.
다음은 활동 수명 주기 이벤트 전달의 예입니다.
자바
@Override public void onResume() { mRewardedVideoAd.resume(this); super.onResume(); } @Override public void onPause() { mRewardedVideoAd.pause(this); super.onPause(); } @Override public void onDestroy() { mRewardedVideoAd.destroy(this); super.onDestroy(); }
Kotlin
override fun onPause() { super.onPause() mRewardedVideoAd.pause(this) } override fun onResume() { super.onResume() mRewardedVideoAd.resume(this) } override fun onDestroy() { super.onDestroy() mRewardedVideoAd.destroy(this) }
Unity와 통합
Unity 프로젝트에 보상형 동영상을 통합하는 방법을 자세히 알아보려면 보상형 동영상을 참고하세요.