Quảng cáo có tặng thưởng

Quảng cáo có tặng thưởng là những quảng cáo mà người dùng có tùy chọn tương tác để đổi lấy 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 có tặng thưởng từ AdMob vào một ứng dụng iOS. Hãy đọc một số câu chuyện thành công của khách hàng: nghiên cứu điển hình 1, nghiên cứu điển hình 2.

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

  • SDK quảng cáo trên thiết bị di động của Google phiên bản 8.0.0 trở lên.
  • Thực hiện theo hướng dẫn Bắt đầu để nhập SDK quảng cáo trên thiết bị di động của Google.

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 có tặng thưởng trên iOS:

ca-app-pub-3940256099942544/1712485313

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 lập trình, chạy 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.

Triển khai

Các bước chính để tích hợp quảng cáo có tặng thưởng là:

  1. Tải một quảng cáo.
  2. Đăng ký các lệnh gọi lại.
  3. Hiển thị quảng cáo và xử lý sự kiện phần thưởng.

Tải một quảng cáo

Bạn có thể tải một quảng cáo bằng cách sử dụng phương thức loadWithAdUnitID:request:completionHandler: tĩnh cho lớp GADRewardedAd. Phương thức tải này yêu cầu mã đơn vị quảng cáo của bạn, một đối tượng GADRequest, và một trình xử lý hoàn thành để gọi khi tải quảng cáo thành công hoặc không thành công. Đối tượng GADRewardedAd đã tải được cung cấp dưới dạng một thông số trong trình xử lý hoàn thành. Ví dụ bên dưới cho biết cách tải GADRewardedAd trong lớp ViewController của bạn.

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GADRequest *request = [GADRequest request];
  [GADRewardedAd
       loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
      }];
}

Đăng ký các lệnh gọi lại

Để nhận thông báo cho các sự kiện trình bày, bạn phải triển khai giao thức GADFullScreenContentDelegate và chỉ định giao thức đó cho thuộc tính fullScreenContentDelegate của quảng cáo được trả về. Giao thức GADFullScreenContentDelegate xử lý các lệnh gọi lại khi quảng cáo hiển thị thành công hoặc không thành công và khi quảng cáo bị loại bỏ. Đoạn mã sau đây cho biết cách triển khai giao thức và chỉ định giao thức đó cho quảng cáo:

Objective-C

@interface ViewController ()<GADFullScreenContentDelegate>

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GADRequest *request = [GADRequest request];
  [GADRewardedAd
       loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
        self.rewardedAd.fullScreenContentDelegate = self;
      }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad presented full screen content.
- (void)adDidPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad did present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
   NSLog(@"Ad did dismiss full screen content.");
}

GADRewardedAd là đối tượng dùng một lần. Điều này có nghĩa là khi quảng cáo có tặng thưởng hiển thị, đối tượng sẽ không thể hiển thị lại. Phương pháp hay nhất là tải một quảng cáo có tặng thưởng khác trong phương thức adDidDismissFullScreenContent: trên GADFullScreenContentDelegate để quảng cáo có tặng thưởng tiếp theo bắt đầu tải ngay khi quảng cáo trước đó bị đóng:

Hiển thị quảng cáo và xử lý sự kiện phần thưởng

Trước khi hiển thị quảng cáo có tặng thưởng cho người dùng, bạn cần cho người dùng thấy tùy 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.

Khi hiển thị quảng cáo, bạn phải cung cấp một đối tượng GADUserDidEarnRewardHandler để xử lý phần thưởng cho người dùng.

Bạn nên sử dụng mã sau đây để hiển thị một quảng cáo có tặng thưởng.

Objective-C

- (void)show {
  ...
  if (self.rewardedAd) {
    [self.rewardedAd presentFromRootViewController:self
                                  userDidEarnRewardHandler:^{
                                  GADAdReward *reward =
                                      self.rewardedAd.adReward;
                                  // TODO: Reward the user!
                                }];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Câu hỏi thường gặp

Tôi có thể nhận thông tin chi tiết về phần thưởng cho GADRewardedAd không?
Có, nếu bạn cần biết số tiền thưởng trước khi kích hoạt lệnh gọi lại userDidEarnReward, GADRewardedAd có thuộc tính adReward để bạn có thể kiểm tra nhằm xác minh số tiền thưởng sau khi quảng cáo đã tải.
Lệnh gọi khởi chạy có thời gian chờ không?
Sau 10 giây, SDK quảng cáo trên thiết bị di động của Google sẽ gọi GADInitializationCompletionHandler đã cung cấp cho phương thức startWithCompletionHandler:, ngay cả khi mạng dàn xếp chưa hoàn thành quy trình khởi chạy.
Điều gì xảy ra nếu một số mạng dàn xếp chưa sẵn sàng hoạt động khi tôi nhận được lệnh gọi lại khởi chạy?

Đó là phương pháp hay nhất để tải quảng cáo bên trong GADInitializationCompletionHandler. Ngay cả khi mạng dàn xếp chưa sẵn sàng hoạt động, SDK quảng cáo trên thiết bị di động của Google vẫn sẽ yêu cầu mạng đó cho quảng cáo. Vì vậy, nếu mạng dàn xếp kết thúc quá trình khởi chạy sau khi hết thời gian chờ, mạng quảng cáo đó vẫn có thể phục vụ các yêu cầu quảng cáo tiếp theo trong phiên hoạt động đó.

Bạn có thể tiếp tục kiểm tra vòng trạng thái khởi chạy của tất cả các bộ chuyển đổi trong suốt phiên hoạt động trong ứng dụng của mình bằng cách gọi GADMobileAds.initializationStatus.

Làm cách nào để biết lý do khiến một mạng dàn xếp cụ thể chưa sẵn sàng hoạt động?

Thuộc tính description của đối tượng GADAdapterStatus cho biết lý do tại sao bộ chuyển đổi chưa sẵn sàng phục vụ các yêu cầu quảng cáo.