Quảng cáo có tặng thưởng dạng video là quảng cáo dạng video toàn màn hình mà người dùng có thể chọn xem toàn bộ video để nhận thưởng trong ứng dụng.
Hướng dẫn này cho bạn biết cách tích hợp quảng cáo video có tặng thưởng từ AdMob vào ứng dụng Unity.
Điều kiện tiên quyết
Hoàn thành các bước Bắt đầu sử dụng. Ứng dụng Unity của bạn phải nhập plugin Unity quảng cáo trên thiết bị di động của Google.
Tham chiếu đến bản sao singleton
Để hiển thị quảng cáo video có tặng thưởng, trước tiên, bạn cần tham chiếu đến
bản sao singleton RewardBasedVideoAd
. Bạn có thể lấy tệp tham chiếu này bằng cách
gọi RewardBasedVideoAd.Instance
.
using GoogleMobileAds.Api; ... public class GoogleMobileAdsDemoScript : MonoBehaviour { private RewardBasedVideoAd rewardBasedVideo; ... public void Start() { // Initialize the Google Mobile Ads SDK. MobileAds.Initialize(initStatus => { }); // Get singleton reward based video ad reference. this.rewardBasedVideo = RewardBasedVideoAd.Instance; } }
Tải quảng cáo
Vì RewardedBasedVideoAd
là singleton, nên bạn phải yêu cầu tải quảng cáo
bằng một bản sao được chia sẻ.
Bạn nên gọi LoadAd()
càng sớm càng tốt (ví dụ:
trong phương thức Start()
của tập lệnh đính kèm với GameObject
) để cho phép
tải trước video, như hiển thị bên dưới.
...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
private RewardBasedVideoAd rewardBasedVideo;
...
public void Start()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize(initStatus => { });
// Get singleton reward based video ad reference.
this.rewardBasedVideo = RewardBasedVideoAd.Instance;
this.RequestRewardBasedVideo();
}
private void RequestRewardBasedVideo()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
string adUnitId = "unexpected_platform";
#endif
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the rewarded video ad with the request.
this.rewardBasedVideo.LoadAd(request, adUnitId);
}
}
Luôn kiểm tra bằng quảng cáo thử nghiệm
Mã mẫu ở trên chứa một mã đơn vị quảng cáo và bạn có thể yêu cầu quảng cáo bằng mã đơn vị quảng cáo đó. Mã này được định cấu hình đặc biệt để trả về quảng cáo thử nghiệm thay vì quảng cáo thực tế cho mọi yêu cầu, đó là lý do mã này rất an toàn khi sử dụng.
Tuy nhiên, sau khi đăng ký một ứng dụng trong giao diện người dùng AdMob và tạo ID đơn vị quảng cáo của riêng mình để sử dụng trong ứng dụng, bạn cần định cấu hình thiết bị làm thiết bị thử nghiệm một cách rõ ràng khi bạn đang phát triển. Điều này cực kỳ quan trọng. Việc thử nghiệm bằng quảng cáo thực (ngay cả khi bạn không bao giờ nhấn vào quảng cáo) là hành vi vi phạm chính sách của AdMob và có thể khiến tài khoản của bạn bị tạm ngưng. Hãy xem phần Quảng cáo thử nghiệm để biết cách đảm bảo bạn luôn nhận được quảng cáo thử nghiệm trong quá trình phát triển.
Sự kiện quảng cáo
Để tùy chỉnh thêm hành vi của quảng cáo, bạn có thể dựa trên một số
sự kiện trong vòng đời của quảng cáo: tải, mở, đóng, v.v. Hãy theo dõi
những sự kiện này bằng cách đăng ký một đại diện cho EventHandler
thích hợp. Hệ thống sẽ gọi sự kiện quan trọng nhất là OnAdRewarded
khi người dùng
nhận được phần thưởng vì đã xem video. Bạn cũng có thể triển khai các sự kiện quảng cáo khác, như hiển thị
dưới đây.
...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
private RewardBasedVideoAd rewardBasedVideo;
...
public void Start()
{
// Get singleton reward based video ad reference.
this.rewardBasedVideo = RewardBasedVideoAd.Instance;
// Called when an ad request has successfully loaded.
rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded;
// Called when an ad request failed to load.
rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
// Called when an ad is shown.
rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened;
// Called when the ad starts to play.
rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted;
// Called when the user should be rewarded for watching a video.
rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
// Called when the ad is closed.
rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed;
// Called when the ad click caused the user to leave the application.
rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication;
this.RequestRewardBasedVideo();
}
private void RequestRewardBasedVideo()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
string adUnitId = "unexpected_platform";
#endif
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the rewarded video ad with the request.
this.rewardBasedVideo.LoadAd(request, adUnitId);
}
public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoLoaded event received");
}
public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print(
"HandleRewardBasedVideoFailedToLoad event received with message: "
+ args.Message);
}
public void HandleRewardBasedVideoOpened(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoOpened event received");
}
public void HandleRewardBasedVideoStarted(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoStarted event received");
}
public void HandleRewardBasedVideoClosed(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoClosed event received");
}
public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{
string type = args.Type;
double amount = args.Amount;
MonoBehaviour.print(
"HandleRewardBasedVideoRewarded event received for "
+ amount.ToString() + " " + type);
}
public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received");
}
}
Sự kiện OnAdRewarded
chứa các đối số sự kiện đặc biệt. Sự kiện này chuyển một bản sao
của Reward
có Type
và Amount
mô tả phần thưởng người dùng nhận được:
public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{
string type = args.Type;
double amount = args.Amount;
print("User rewarded with: " + amount.ToString() + " " + type);
}
Sự kiện OnAdFailedToLoad
cũng chứa các đối số sự kiện đặc biệt. Sự kiện này chuyển
một bản sao của HandleAdFailedToLoadEventArgs
có Message
mô tả lỗi:
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
print("Rewarded video ad failed to load: " + args.Message);
// Handle the ad failed to load event.
}
Sự kiện quảng cáo | Nội dung mô tả |
---|---|
OnAdLoaded |
Sự kiện OnAdLoaded được gọi khi quảng cáo
tải xong. |
OnAdFailedToLoad |
Sự kiện OnAdFailedToLoad được gọi khi quảng cáo
không tải được. Tham số Message mô tả loại
lỗi
đã xảy ra.
|
OnAdOpening
|
Phương thức này được gọi khi quảng cáo hiển thị, bao phủ màn hình của thiết bị. Nếu bạn đang sử dụng một gói phân tích để theo dõi các lần nhấp qua, thì đây là phương thức rất phù hợp để ghi lại. |
OnAdStarted
|
Phương thức này được gọi khi quảng cáo bắt đầu phát |
OnAdRewarded
|
Phương thức này được gọi khi người dùng được thưởng vì đã xem
video. Tham số Reward mô tả phần thưởng mà người dùng
sẽ nhận được.
|
OnAdClosed
|
Phương thức này được gọi khi người dùng nhấn vào biểu tượng đóng hoặc dùng nút quay lại để đóng quảng cáo dạng video có tặng thưởng. Nếu ứng dụng tạm dừng phát âm thanh hoặc vòng lặp trò chơi, thì đây là vị trí thích hợp để tiếp tục phát. |
OnAdLeavingApplication
|
Phương thức này được gọi sau OnAdOpened , khi thao tác nhấp của người dùng
mở ứng dụng khác (chẳng hạn như Cửa hàng Google Play) và chuyển ứng dụng hiện tại
sang chạy ở chế độ nền.
|
Hiển thị quảng cáo
Trước khi hiển thị quảng cáo có tặng thưởng cho người dùng, bạn cần đưa ra lựa chọn rõ ràng về việc xem nội dung quảng cáo có tặng thưởng để đổi lấy phần thưởng. Người dùng phải luôn có thể chọn xem hoặc không xem quảng cáo có tặng thưởng.
Để hiển thị quảng cáo video có tặng thưởng, hãy sử dụng phương thức IsLoaded()
để xác minh rằng
quảng cáo đã tải xong, sau đó gọi Show()
.
Đoạn mã sau đây minh họa cách hiển thị quảng cáo video có tặng thưởng.
private void UserOptToWatchAd()
{
if (rewardBasedVideo.IsLoaded()) {
rewardBasedVideo.Show();
}
}
Tải lại quảng cáo
Sự kiện OnAdClosed
là nơi thuận tiện để 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 đó:
public void Start() { this.rewardBasedVideo = RewardBasedVideoAd.Instance; rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed; } public void HandleRewardBasedVideoClosed(object sender, EventArgs args) { this.RequestRewardBasedVideo(); }
Các tài nguyên khác
Mẫu
- Mẫu HelloWorld cách triển khai tối giản cho mọi định dạng quảng cáo
Các bước tiếp theo
- Tạo đơn vị quảng cáo dạng video có tặng thưởng riêng trong giao diện người dùng AdMob.
- Hãy thử dùng định dạng quảng cáo khác: