Quảng cáo xen kẽ

Quảng cáo xen kẽ là quảng cáo toàn màn hình che phủ giao diện của một ứng dụng cho đến khi người dùng đóng lại. Quảng cáo này thường được hiển thị ở các điểm chuyển tiếp tự nhiên trong luồng ứng dụng, chẳng hạn như giữa các hoạt động hoặc trong thời gian tạm dừng giữa các cấp độ trong trò chơi. Khi một ứng dụng hiển thị quảng cáo xen kẽ, người dùng sẽ có thể chọn nhấn vào quảng cáo và tiếp tục chuyển đến trang đích của quảng cáo đó hoặc đóng quảng cáo và quay lại ứng dụng. Nghiên cứu điển hình.

Tài liệu hướng dẫn này trình bày cách tích hợp quảng cáo xen kẽ vào một ứng dụng iOS.

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

Tạo đối tượng quảng cáo xen kẽ

Quảng cáo xen kẽ do các đối tượng GADInterstitial yêu cầu và hiển thị. Bước đầu tiên để sử dụng quảng cáo xen kẽ là tạo phiên bản quảng cáo và đặt mã đơn vị quảng cáo. Ví dụ: dưới đây là cách tạo GADInterstitial trong phương thức viewDidLoad của UIViewController:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  var interstitial: GADInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()
    interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  self.interstitial = [[GADInterstitial alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"];
}

GADInterstitial là đối tượng sử dụng một lần có thể tải và hiển thị một quảng cáo xen kẽ. Để hiển thị nhiều quảng cáo xen kẽ, một ứng dụng cần tạo GADInterstitial cho từng quảng cáo xen kẽ.

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 xen kẽ iOS: ca-app-pub-3940256099942544/4411468910

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 viết mã, 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 về Quảng cáo thử nghiệm.

Tải quảng cáo

Để tải quảng cáo xen kẽ, hãy gọi loadRequest: trên đối tượng GADRequest:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  var interstitial: GADInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()
    interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
    let request = GADRequest()
    interstitial.load(request)
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[GADInterstitial alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"];
  GADRequest *request = [GADRequest request];
  [self.interstitial loadRequest:request];
}

Hiển thị quảng cáo

Quảng cáo xen kẽ nên được hiển thị tại các điểm tạm dừng tự nhiên trong quy trình hoạt động của ứng dụng. Bạn nên thiết lập để quảng cáo xuất hiện giữa các cấp độ của trò chơi hoặc sau khi người dùng hoàn thành một nhiệm vụ. Để hiển thị quảng cáo xen kẽ, hãy kiểm tra thuộc tính isReady trên GADInterstitial để xác minh rằng quảng cáo đó đã tải xong, sau đó gọi presentFromRootViewController. Dưới đây là ví dụ về cách thực hiện việc này theo một trong các phương thức hành động trong UIViewController:

Swift

@IBAction func doSomething(_ sender: AnyObject) {
  ...
  if interstitial.isReady {
    interstitial.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (IBAction)doSomething:(id)sender {
  ...
  if (self.interstitial.isReady) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Thông báo: "Không thể hiển thị quảng cáo xen kẽ. Quảng cáo chưa sẵn sàng" cho biết rằng quảng cáo xen kẽ vẫn đang tải hoặc không tải được. Để tránh cảnh báo này, hãy sử dụng phương thức isReady để kiểm tra xem liệu quảng cáo xen kẽ đã sẵn sàng hiển thị hay chưa trước khi gọi presentFromRootViewController:.

Sử dụng GADInterstitialDelegate để tải lại

GADInterstitial là đối tượng dùng một lần. Điều này có nghĩa là sau khi quảng cáo xen kẽ hiển thị, hasBeenUsed sẽ trả về true và bạn không thể sử dụng quảng cáo xen kẽ để tải một quảng cáo khác. Để yêu cầu một quảng cáo xen kẽ khác, bạn cần tạo đối tượng GADInterstitial mới. Nếu cố gắng sử dụng lại một đối tượng quảng cáo xen kẽ, bạn sẽ gặp lỗi "Lỗi yêu cầu: Hệ thống sẽ không gửi yêu cầu vì đối tượng quảng cáo xen kẽ đã được sử dụng".

Vị trí tốt nhất để hiển thị một quảng cáo xen kẽ khác là trong phương thức interstitialDidDismissScreen trên GADInterstitialDelegate để quảng cáo xen kẽ tiếp theo bắt đầu tải ngay sau khi quảng cáo xen kẽ trước đó bị đóng. Thậm chí bạn có thể xem xét việc tách quy trình khởi tạo quảng cáo xen kẽ ra thành phương thức trợ giúp riêng:

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  interstitial = createAndLoadInterstitial()
}

func createAndLoadInterstitial() -> GADInterstitial {
  var interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
  interstitial.delegate = self
  interstitial.load(GADRequest())
  return interstitial
}

func interstitialDidDismissScreen(_ ad: GADInterstitial) {
  interstitial = createAndLoadInterstitial()
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [self createAndLoadInterstitial];
}

- (GADInterstitial *)createAndLoadInterstitial {
  GADInterstitial *interstitial =
      [[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"];
  interstitial.delegate = self;
  [interstitial loadRequest:[GADRequest request]];
  return interstitial;
}

- (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial {
  self.interstitial = [self createAndLoadInterstitial];
}

Bằng cách tải trước một quảng cáo xen kẽ khác ngay sau khi quảng cáo xen kẽ trước đó bị đóng, ứng dụng của bạn có thể hiển thị lại quảng cáo xen kẽ tại điểm ngắt hợp lý tiếp theo.

Sự kiện quảng cáo

Khi sử dụng GADInterstitialDelegate, bạn có thể theo dõi các sự kiện trong chu trình hoạt động của quảng cáo, chẳng hạn như khi người dùng đóng quảng cáo hoặc rời khỏi ứng dụng.

Đăng ký sự kiện quảng cáo xen kẽ

Để đăng ký các sự kiện quảng cáo xen kẽ, hãy đặt thuộc tính delegate trên GADInterstitial thành đối tượng sẽ triển khai giao thức GADInterstitialDelegate. Thông thường, lớp triển khai quảng cáo xen kẽ cũng đóng vai trò là lớp ủy quyền, mà trong trường hợp này, bạn có thể đặt thuộc tính delegate thành self như sau:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADInterstitialDelegate {

  var interstitial: GADInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()
    interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
    interstitial.delegate = self
  }
}

Objective-C

#import "GADInterstitial.h"
#import "GADInterstitialDelegate.h"

@interface ViewController () <GADInterstitialDelegate>

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:"ca-app-pub-3940256099942544/4411468910"];
  self.interstitial.delegate = self;
}

Triển khai sự kiện quảng cáo xen kẽ

Mỗi phương thức trong GADInterstitialDelegate đều được đánh dấu là không bắt buộc, vì vậy, bạn chỉ cần triển khai các phương thức mình muốn. 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:

Swift

/// Tells the delegate an ad request succeeded.
func interstitialDidReceiveAd(_ ad: GADInterstitial) {
  print("interstitialDidReceiveAd")
}

/// Tells the delegate an ad request failed.
func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) {
  print("interstitial:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

/// Tells the delegate that an interstitial will be presented.
func interstitialWillPresentScreen(_ ad: GADInterstitial) {
  print("interstitialWillPresentScreen")
}

/// Tells the delegate the interstitial is to be animated off the screen.
func interstitialWillDismissScreen(_ ad: GADInterstitial) {
  print("interstitialWillDismissScreen")
}

/// Tells the delegate the interstitial had been animated off the screen.
func interstitialDidDismissScreen(_ ad: GADInterstitial) {
  print("interstitialDidDismissScreen")
}

/// Tells the delegate that a user click will open another app
/// (such as the App Store), backgrounding the current app.
func interstitialWillLeaveApplication(_ ad: GADInterstitial) {
  print("interstitialWillLeaveApplication")
}

Objective-C

/// Tells the delegate an ad request succeeded.
- (void)interstitialDidReceiveAd:(GADInterstitial *)ad {
  NSLog(@"interstitialDidReceiveAd");
}

/// Tells the delegate an ad request failed.
- (void)interstitial:(GADInterstitial *)ad
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription]);
}

/// Tells the delegate that an interstitial will be presented.
- (void)interstitialWillPresentScreen:(GADInterstitial *)ad {
  NSLog(@"interstitialWillPresentScreen");
}

/// Tells the delegate the interstitial is to be animated off the screen.
- (void)interstitialWillDismissScreen:(GADInterstitial *)ad {
  NSLog(@"interstitialWillDismissScreen");
}

/// Tells the delegate the interstitial had been animated off the screen.
- (void)interstitialDidDismissScreen:(GADInterstitial *)ad {
  NSLog(@"interstitialDidDismissScreen");
}

/// Tells the delegate that a user click will open another app
/// (such as the App Store), backgrounding the current app.
- (void)interstitialWillLeaveApplication:(GADInterstitial *)ad {
  NSLog(@"interstitialWillLeaveApplication");
}

Một số phương pháp hay nhất

Cân nhắc xem quảng cáo xen kẽ có phải là loại quảng cáo thích hợp cho ứng dụng của bạn hay không.
Quảng cáo xen kẽ hoạt động hiệu quả nhất trong các ứng dụng có các điểm chuyển tiếp tự nhiên. Hãy tạo ra một điểm chuyển tiếp khi kết thúc một thao tác trong ứng dụng, chẳng hạn như chia sẻ hình ảnh hoặc hoàn tất một cấp độ trò chơi. Bởi vì người dùng mong đợi một khoảng thời gian tạm nghỉ, nên bạn dễ dàng hiển thị quảng cáo xen kẽ mà không làm gián đoạn trải nghiệm của họ. Hãy đảm bảo cân nhắc thời điểm bạn muốn hiển thị quảng cáo xen kẽ trong quy trình hoạt động của ứng dụng và khả năng phản hồi của người dùng.
Hãy nhớ tạm dừng hành động khi hiển thị quảng cáo xen kẽ.
Có một số loại quảng cáo xen kẽ như: văn bản, hình ảnh, video và các loại khác. Bạn phải đảm bảo rằng khi ứng dụng của bạn hiển thị quảng cáo xen kẽ, ứng dụng đó cũng sẽ tạm ngừng sử dụng một số tài nguyên để cho phép quảng cáo tận dụng các tài nguyên đó. Ví dụ: khi bạn thực hiện lệnh gọi để hiển thị quảng cáo xen kẽ, hãy chắc chắn bạn đã tạm dừng phát mọi âm thanh trên ứng dụng của mình. Bạn có thể tiếp tục phát âm thanh trong trình xử lý sự kiện interstitialDidDismissScreen, trình xử lý này sẽ được gọi khi người dùng đã tương tác xong với quảng cáo. Ngoài ra, bạn hãy cân nhắc tạm dừng mọi thao tác tính toán cường độ cao (chẳng hạn như vòng lặp trò chơi) trong khi hiển thị quảng cáo. Việc này sẽ giúp người dùng không thấy hình ảnh chậm hiển thị hoặc không phản hồi hay video bị giật.
Thiết lập thời gian thích hợp cho việc tải quảng cáo.
Bạn phải đảm bảo hiển thị quảng cáo xen kẽ tại thời điểm phù hợp, nhưng cũng phải đảm bảo người dùng không phải đợi quảng cáo tải. Việc tải quảng cáo trước bằng cách gọi loadRequest trước khi bạn dự định gọi presentFromRootViewController có thể đảm bảo rằng ứng dụng của bạn có quảng cáo xen kẽ đã tải đầy đủ và sẵn sàng hiển thị tại thời điểm thích hợp.
Đừng hiển thị quá nhiều quảng cáo cho người dùng.
Mặc dù việc tăng tần suất hiển thị quảng cáo xen kẽ trong ứng dụng có thể là một cách hay để tăng doanh thu, nhưng việc đó cũng có thể làm suy giảm trải nghiệm người dùng và làm giảm tỷ lệ nhấp. Hãy đảm bảo rằng người dùng không bị gián đoạn thường xuyên vì điều đó sẽ làm họ không còn hứng thú khi sử dụng ứng dụng của bạn nữa.
Không sử dụng sự kiện interstitialDidReceiveAd để hiển thị quảng cáo xen kẽ.
Điều này có thể dẫn đến trải nghiệm người dùng kém. Thay vào đó, hãy tải trước quảng cáo rồi mới hiển thị quảng cáo đó. Sau đó, bạn hãy kiểm tra phương thức isReady trên GADInterstitial để tìm hiểu xem quảng cáo đã sẵn sàng hiển thị hay chưa.

Tài nguyên khác

Các mẫu trên GitHub

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

Câu chuyện thành công

Các bước tiếp theo