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

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ó tùy 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 dạng 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 có tặng thưởng dạng video

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 nhớ 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 xem bài viết 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 vòng đời của quảng cáo có tặng thưởng dạng video. 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 pháp hay nhất để đảm bảo rằng một quảng cáo có tặng thưởng dạng video đã 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 dạng 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 dạng video có tặng thưởng

rewardBasedVideoAdDidClose:. là vị trí thuận tiện để tải quảng cáo dạng 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"];
}

Các 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