보상형 동영상 광고(기존 API)

보상형 동영상 광고는 동영상 광고를 끝까지 시청한 사용자에게 인앱 보상을 제공하는 전체 화면 동영상 광고입니다. 이 가이드에는 AdMob의 보상형 광고를 Android 앱에 통합하는 방법이 나와 있습니다.

기본 요건

보상형 동영상 광고 초기화

자바

    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() 메서드를 이용해 설정합니다. 미디에이션 대상인 모든 네트워크의 이벤트를 자동으로 이 리스너에 알립니다. 예를 들면 RewardedVideoAdListeneronRewarded() 메서드를 통해 동영상 시청으로 보상을 받는 사용자에 대해 알림을 받을 수 있습니다.

보상형 동영상 광고 요청

자바

    @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 프로젝트에 보상형 동영상을 통합하는 방법을 자세히 알아보려면 보상형 동영상을 참고하세요.

추가 리소스

GitHub의 샘플

동영상 가이드

Codelab

다음 단계

  • AdMob UI에서 자체 보상형 동영상 광고 단위를 만드세요.

  • 다음과 같은 다른 광고 형식을 사용해 보세요.