Quảng cáo video có tặng thưởng (API cũ)

Quảng cáo video có tặng thưởng là quảng cáo video toàn màn hình mà người dùng có thể chọn xem toàn bộ video để đổi lấy các phần thưởng trong ứng dụng. Tài liệu hướng dẫn này trình bày cách tích hợp quảng cáo video có tặng thưởng từ AdMob vào ứng dụng Android.

Điều kiện tiên quyết

Khởi chạy quảng cáo video có tặng thưởng

Java

    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
        }
        ...
    }
    

Bạn có thể truy xuất đối tượng RewardedVideoAd bằng cách sử dụng MobileAds.getRewardedVideoAdInstance().

Để nhận được thông báo về các sự kiện trong thời gian hoạt động của quảng cáo video có tặng thưởng, bạn phải triển khai RewardedVideoAdListener. Bạn có thể đặt trình nghe quảng cáo có tặng thưởng bằng phương thức setRewardedVideoAdListener(). Hệ thống sẽ tự động thông báo cho trình nghe này về các sự kiện trên tất cả các mạng mà bạn đang áp dụng tính năng dàn xếp. Ví dụ: bạn sẽ nhận được thông báo khi một người dùng được tặng thưởng vì đã xem video bằng phương thức onRewarded() trên RewardedVideoAdListener.

Yêu cầu quảng cáo video có tặng thưởng

Java

    @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())
    }

Để đảm bảo rằng bạn tuân thủ thiết kế singleton của RewardedVideoAd, bạn phải gửi yêu cầu tải quảng cáo cho bản sao đã chia sẻ.

Bạn nên gọi loadAd() càng sớm càng tốt (ví dụ: trong phương thức onCreate() của Hoạt động) để cho phép video tải trước.

Luôn kiểm tra bằng quảng cáo thử nghiệm

Khi tạo và thử nghiệm ứng dụng, hãy đảm bảo rằng bạn sử dụng quảng cáo thử nghiệm thay vì quảng cáo đang chạy thực tế. Chúng tôi sẽ tạm ngưng tài khoản của bạn nếu bạn không thực hiện việc này.

Cách dễ nhất để tải quảng cáo thử nghiệm là sử dụng mã đơn vị quảng cáo thử nghiệm dành riêng cho quảng cáo video có tặng thưởng Android:

ca-app-pub-3940256099942544/5224354917

Mã này được định cấu hình đặc biệt để trả về quảng cáo thử nghiệm cho mọi yêu cầu và bạn có thể sử dụng mã này trong ứng dụng của mình khi viết mã, chạy thử nghiệm và gỡ lỗi. Bạn chỉ cần thay thế mã này bằng mã đơn vị quảng cáo của mình trước khi xuất bản ứng dụng.

Để biết thêm thông tin về cách hoạt động của quảng cáo thử nghiệm của SDK quảng cáo trên thiết bị di động, hãy tham khảo bài viết về Quảng cáo thử nghiệm.

Thiết lập thông báo sự kiện

SDK cung cấp giao diện RewardedVideoAdListener. Giao diện này có các phương thức tương ứng với các sự kiện trong thời gian hoạt động của quảng cáo video có tặng thưởng. Hãy thiết lập để ứng dụng của bạn xác định lớp sẽ triển khai giao diện này và chuyển lớp này đến setRewardedVideoAdListener trước khi tải quảng cáo.

Ví dụ về mã trong bài viết Khởi chạy quảng cáo video có tặng thưởng cho thấy cách khai báo việc lớp của bạn sẽ triển khai RewardedVideoAdListener và đặt trình nghe vào đối tượng RewardedVideoAd. Dưới đây là quy trình triển khai mẫu của các phương thức trình nghe:

Java

    @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()
    }
    

Hiển thị quảng cáo video có tặng thưởng

Java

    if (mRewardedVideoAd.isLoaded()) {
        mRewardedVideoAd.show();
    }
    

Kotlin

    if (mRewardedVideoAd.isLoaded) {
        mRewardedVideoAd.show()
    }
    

Bạn nên đảm bảo rằng quảng cáo video có tặng thưởng đã tải xong trước khi thử hiển thị quảng cáo đó. Phương thức isLoaded() cho biết liệu hệ thống đã thực hiện thành công yêu cầu quảng cáo video có tặng thưởng hay chưa.

Sử dụng RewardedVideoAdListener để tải lại quảng cáo

Phương thức onRewardedVideoAdClosed() của lớp RewardedVideoAdListener là phương thức phù hợp để tải quảng cáo video có tặng thưởng mới sau khi hiển thị quảng cáo video có tặng thưởng trước đó:

Java

    @Override
    public void onRewardedVideoAdClosed() {
        // Load the next rewarded video ad.
        loadRewardedVideoAd();
    }
    

Kotlin

    override fun onRewardedVideoAdClosed() {
        loadRewardedVideoAd()
    }
    

Chuyển tiếp các sự kiện trong thời gian hoạt động

Để chuyển tiếp các sự kiện trong thời gian hoạt động của Hoạt động cấp độ gốc đến đối tượng RewardedVideoAd, bạn hãy gọi phương thức resume(), pause()destroy() trong các phương thức onResume(), onPause()onDestroy() của Hoạt động cấp độ gốc tương ứng.

Dưới đây là ví dụ về quy trình chuyển tiếp sự kiện của Hoạt động trong thời gian hoạt động:

Java

    @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)
    }
    

Tích hợp với Unity

Để xem hướng dẫn về cách tích hợp quảng cáo video có tặng thưởng vào dự án Unity, hãy tham khảo bài viết về Quảng cáo video có tặng thưởng.

Các tài nguyên khác

Các mẫu trên GitHub

  • Ứng dụng mẫu Quảng cáo video có tặng thưởng: Java | Kotlin

Video hướng dẫn

Lớp học mã

Các bước tiếp theo