Quảng cáo xen kẽ có tặng thưởng là một loại định dạng quảng cáo có tặng thưởng, cho phép bạn tặng phần thưởng cho những quảng cáo tự động xuất hiện tại các điểm chuyển đổi tự nhiên của ứng dụng. Không giống như quảng cáo có tặng thưởng, người dùng không bắt buộc phải chọn xem quảng cáo xen kẽ có tặng thưởng. Hướng dẫn này trình bày cách tích hợp quảng cáo xen kẽ có tặng thưởng từ AdMob vào ứng dụng Flutter.
Điều kiện tiên quyết
- Trình bổ trợ Flutter phiên bản 1.1.0 trở lên.
- Hoàn tất phần Bắt đầu sử dụng. Ứng dụng Flutter của bạn phải nhập sẵn trình bổ trợ Flutter dành cho Quảng cáo trên thiết bị di động của Google.
Luôn thử nghiệm bằng quảng cáo thử nghiệm
Khi tạo và thử nghiệm ứng dụng, hãy nhớ sử dụng quảng cáo thử nghiệm thay vì quảng cáo đang chạy trong thực tế. Nếu không làm như vậy, tài khoản của bạn có thể bị tạm ngưng.
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 xen kẽ có tặng thưởng:
Android
ca-app-pub-3940256099942544/5354046379
iOS
ca-app-pub-3940256099942544/6978759866
Các đơn vị quảng cáo thử nghiệm được định cấu hình để trả về quảng cáo thử nghiệm cho mọi yêu cầu, và bạn có thể sử dụng các đơn vị quảng cáo này trong ứng dụng của mình khi lập trình, thử nghiệm và gỡ lỗi. Bạn chỉ cần đảm bảo rằng bạn sẽ thay thế các mã này bằng mã đơn vị quảng cáo riêng của mình trước khi xuất bản ứng dụng.
Tải quảng cáo
Sau đây là ví dụ về đoạn mã tải một quảng cáo xen kẽ có tặng thưởng:
class RewardedInterstitialExampleState extends State<RewardedInterstitialExample> { RewardedInterstitialAd? _rewardeInterstitialdAd; // TODO: replace this test ad unit with your own ad unit. final adUnitId = Platform.isAndroid ? 'ca-app-pub-3940256099942544/5354046379' : 'ca-app-pub-3940256099942544/6978759866'; /// Loads a rewarded ad. void loadAd() { RewardedInterstitialAd.load( adUnitId: adUnitId, adRequest: const AdRequest(), adLoadCallback: RewardedInterstitialAdLoadCallback( // Called when an ad is successfully received. onAdLoaded: (ad) { debugPrint('$ad loaded.'); // Keep a reference to the ad so you can show it later. _rewardedInterstitialAd = ad; }, // Called when an ad request failed. onAdFailedToLoad: (LoadAdError error) { debugPrint('RewardedInterstitialAd failed to load: $error'); }, )); } }
Các sự kiện của quảng cáo xen kẽ có tặng thưởng
Khi sử dụng FullScreenContentCallback
, bạn có thể theo dõi các sự kiện trong vòng đời của quảng cáo, chẳng hạn như khi quảng cáo hiển thị hoặc bị loại bỏ. Hãy đặt RewardedInterstitialAd.fullScreenContentCallback
trước khi hiển thị quảng cáo để nhận được thông báo cho những sự kiện này. Sau đây là ví dụ về cách triển khai từng phương thức và ghi nhật ký thông báo vào bảng điều khiển:
class RewardedInterstitialExampleState extends State<RewardedInterstitialExample> { RewardedInterstitialAd? _rewardedInterstitialAd; // TODO: replace this test ad unit with your own ad unit. final adUnitId = Platform.isAndroid ? 'ca-app-pub-3940256099942544/5354046379' : 'ca-app-pub-3940256099942544/6978759866'; /// Loads a rewarded ad. void loadAd() { RewardedInterstitialAd.load( adUnitId: adUnitId, adRequest: const AdRequest(), adLoadCallback: RewardedInterstitialAdLoadCallback( // Called when an ad is successfully received. onAdLoaded: (ad) { ad.fullScreenContentCallback = FullScreenContentCallback( // Called when the ad showed the full screen content. onAdShowedFullScreenContent: (ad) {}, // Called when an impression occurs on the ad. onAdImpression: (ad) {}, // Called when the ad failed to show full screen content. onAdFailedToShowFullScreenContent: (ad, err) { // Dispose the ad here to free resources. ad.dispose(); }, // Called when the ad dismissed full screen content. onAdDismissedFullScreenContent: (ad) { // Dispose the ad here to free resources. ad.dispose(); }, // Called when a click is recorded for an ad. onAdClicked: (ad) {}); debugPrint('$ad loaded.'); // Keep a reference to the ad so you can show it later. _rewardedInterstitialAd = ad; }, // Called when an ad request failed. onAdFailedToLoad: (LoadAdError error) { debugprint('RewardedInterstitialAd failed to load: $error'); }, )); } }
Quảng cáo hiển thị hình ảnh
RewardedInterstitialAd
hiển thị dưới dạng một Lớp phủ trên toàn bộ nội dung ứng dụng và được đặt cố định; do đó, bạn không thể thêm quảng cáo này vào cây tiện ích Flutter.
Bạn có thể chọn thời điểm hiển thị quảng cáo bằng cách gọi show()
.
RewardedInterstitialAd.show()
lấy OnUserEarnedRewardCallback
, được gọi khi người dùng nhận được phần thưởng. Hãy nhớ triển khai tính năng này và thưởng cho người dùng đã xem quảng cáo.
_rewardedInterstitialAd.show(onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) { // Reward the user for watching an ad. });
Sau khi gọi show()
, không thể loại bỏ Ad
được hiển thị theo cách này theo phương thức lập trình mà sẽ cần người dùng thực hiện một hoạt động nào đó. RewardedInterstitialAd
chỉ có thể hiển thị một lần. Các lệnh gọi tiếp theo để hiển thị thẻ sẽ kích hoạt onAdFailedToShowFullScreenContent
.
Bạn phải loại bỏ quảng cáo khi không cần truy cập vào quảng cáo đó nữa. Bạn nên gọi dispose()
trong lệnh gọi lại FullScreenContentCallback.onAdDismissedFullScreenContent
và FullScreenContentCallback.onAdFailedToShowFullScreenContent
.
Vậy là xong! Ứng dụng của bạn hiện đã sẵn sàng hiển thị quảng cáo xen kẽ có tặng thưởng.