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ó tùy chọn xem toàn bộ nhằm đổi lấy các phầ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 iOS.

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

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

GADRewardBasedVideoAd có thiết kế singleton, vì vậy, ví dụ sau sẽ cho thấy một yêu cầu tải quảng cáo đang được thực hiện cho bản sao đã chia sẻ:

Swift

GADRewardBasedVideoAd.sharedInstance().load(GADRequest(),
    withAdUnitID: "ca-app-pub-3940256099942544/1712485313")

Objective-C

[[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request]
    withAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];

Để cho phép tải trước video, bạn nên thực hiện lệnh gọi yêu cầu tải càng sớm càng tốt (ví dụ: trong phương thức application:didFinishLaunchingWithOptions: của đại biểu ứng dụng).

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ế. Lý do là vì nếu sử dụng quảng cáo đang chạy thực tế, 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 ID đơn vị quảng cáo thử nghiệm dành riêng cho video có tặng thưởng iOS:

ca-app-pub-3940256099942544/1712485313

Quảng cáo 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 quảng cáo này trong ứng dụng của riêng mình khi viết mã, thử nghiệm và gỡ lỗi. Bạn chỉ cần thay thế ID này bằng ID đơ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 quảng cáo thử nghiệm của SDK quảng cáo trên thiết bị di động hoạt động, hãy xem Quảng cáo thử nghiệm.

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

Để thiết lập thông báo sự kiện, hãy chèn dòng in đậm trước lệnh gọi yêu cầu tải của bạn:

Swift

GADRewardBasedVideoAd.sharedInstance().delegate = self
GADRewardBasedVideoAd.sharedInstance().load(GADRequest(),
    withAdUnitID: "ca-app-pub-3940256099942544/1712485313")

Objective-C

[GADRewardBasedVideoAd sharedInstance].delegate = self;
[[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request]
                                       withAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];

GADRewardBasedVideoAdDelegate sẽ thông báo cho bạn về các sự kiện trong thời gian hoạt động của video có tặng thưởng. Bạn phải đặt đại biểu trước khi tải một quảng cáo. Sự kiện quan trọng nhất trong đại biểu này là rewardBasedVideoAd:didRewardUserWithReward:, sự kiện này sẽ được gọi khi người dùng được thưởng vì đã xem hết video. Bạn có thể tùy ý triển khai các phương thức khác trong đại biểu này.

Mẫu sau đây minh họa cách ghi nhật ký từng sự kiện có sẵn trong GADRewardBasedVideoAdDelegate:.

Swift

func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd,
    didRewardUserWith reward: GADAdReward) {
  print("Reward received with currency: \(reward.type), amount \(reward.amount).")
}

func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd:GADRewardBasedVideoAd) {
  print("Reward based video ad is received.")
}

func rewardBasedVideoAdDidOpen(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Opened reward based video ad.")
}

func rewardBasedVideoAdDidStartPlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Reward based video ad started playing.")
}

func rewardBasedVideoAdDidCompletePlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Reward based video ad has completed.")
}

func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Reward based video ad is closed.")
}

func rewardBasedVideoAdWillLeaveApplication(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Reward based video ad will leave application.")
}

func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd,
    didFailToLoadWithError error: Error) {
  print("Reward based video ad failed to load.")
}

Objective-C

- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd
    didRewardUserWithReward:(GADAdReward *)reward {
  NSString *rewardMessage =
      [NSString stringWithFormat:@"Reward received with currency %@ , amount %lf",
          reward.type,
          [reward.amount doubleValue]];
  NSLog(rewardMessage);
}

- (void)rewardBasedVideoAdDidReceiveAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad is received.");
}

- (void)rewardBasedVideoAdDidOpen:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Opened reward based video ad.");
}

- (void)rewardBasedVideoAdDidStartPlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad started playing.");
}

- (void)rewardBasedVideoAdDidCompletePlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad has completed.");
}

- (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad is closed.");
}

- (void)rewardBasedVideoAdWillLeaveApplication:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad will leave application.");
}

- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd
    didFailToLoadWithError:(NSError *)error {
  NSLog(@"Reward based video ad failed to load.");
}

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

Đó là phương thức hay nhất để đả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 isReady cho biết rằng yêu cầu quảng cáo video có tặng thưởng đã được thực hiện thành công:

Swift

if GADRewardBasedVideoAd.sharedInstance().isReady == true {
  GADRewardBasedVideoAd.sharedInstance().present(fromRootViewController: self)
}

Objective-C

if ([[GADRewardBasedVideoAd sharedInstance] isReady]) {
  [[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:self];
}

Tải lại quảng cáo video có tặng thưởng

rewardBasedVideoAdDidClose: là vị trí 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 trước đó.

Swift

func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  GADRewardBasedVideoAd.sharedInstance().load(GADRequest(),
      withAdUnitID: "ca-app-pub-3940256099942544/1712485313")
}

Objective-C

- (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  [[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request]
           withAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
}

Tài nguyên khác

Các mẫu quảng cáo video có tặng thưởng trên GitHub:

Swift Objective-C

Video hướng dẫn về Trung tâm quảng cáo trên thiết bị di động

Phòng thí nghiệm mã

Các bước tiếp theo