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
- Nhập SDK quảng cáo trên thiết bị di động của Google, dưới dạng một SDK riêng hoặc một phần của Firebase.
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()
và destroy()
trong các phương thức onResume()
, onPause()
và 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
Video hướng dẫn
Lớp học mã
Các bước tiếp theo
Tạo đơn vị quảng cáo video có tặng thưởng của riêng bạn trong Giao diện người dùng AdMob.
Thử dùng định dạng quảng cáo khác: