Sử dụng API Vị trí đặt quảng cáo

Ad Placement API chứa 2 hàm: adBreak()adConfig(), được xác định trong không gian tên chung sau. Hầu hết các đối số đều là những hàm mà bạn cung cấp, cho phép bạn xử lý các bước chính để chuẩn bị và hiển thị quảng cáo:

adBreak({
   type: '<type>',                      // The type of this placement
   name: '<name>',                      // A descriptive name for this placement
   beforeAd: () => {},                  // Prepare for the ad. Mute and pause the game flow
   afterAd: () => {},                   // Resume the game and un-mute the sound
   beforeReward: (showAdFn) => {},      // Show reward prompt (call showAdFn() if clicked)
   adDismissed: () => {},               // Player dismissed the ad before completion
   adViewed: () => {},                  // Ad was viewed and closed
   adBreakDone: (placementInfo) => {},  // Always called (if provided) even if an ad didn't show
});

adConfig({
   preloadAdBreaks: 'on|auto',      // Should ads always be preloaded
   sound: 'on|off',                 // Is sound currently enabled within the game
});

Các hàm này được dùng để đặt và định cấu hình quảng cáo trong trò chơi. Các đối số nêu trên là những đối số hợp lệ duy nhất có thể được truyền đến các hàm này. Các loại quảng cáo khác nhau yêu cầu các tập hợp con khác nhau của những đối số này như được trình bày chi tiết bên dưới.

adBreak() là hàm chính để đặt quảng cáo trong trò chơi của bạn. Thành phần này xác định một vị trí đặt quảng cáo và lấy một đối tượng gọi là cấu hình vị trí đặt quảng cáo. Đối tượng này chỉ định mọi thứ cần thiết để hiển thị một quảng cáo.

Hàm adBreak() xác định một vị trí mà quảng cáo có thể xuất hiện. Việc quảng cáo có thực sự hiển thị hay không phụ thuộc vào các yếu tố như sau:

  • Loại vị trí đặt quảng cáo mà bạn đã khai báo
    • Quảng cáo này có xuất hiện ở đầu trận đấu không? Giữa các cấp độ? Vào thời điểm người chơi tạm dừng trò chơi?
  • Liệu có quảng cáo phù hợp cho người chơi hiện tại hay không
    • Quảng cáo này có phù hợp với họ không?
    • Có nhất quán với chế độ cài đặt về quyền riêng tư đối với dữ liệu và sự đồng ý của họ không?
  • Số lượng quảng cáo mà trình phát đã xem gần đây
  • Các chế độ cài đặt kiểm soát (ví dụ: tần suất quảng cáo) mà bạn đã định cấu hình cho trò chơi này
    • Dưới dạng gợi ý trong thẻ hoặc
    • Trong AdSense – xin lưu ý rằng các chế độ kiểm soát có trong AdSense sẽ thay đổi theo thời gian.

Loại quảng cáo xuất hiện cũng phụ thuộc vào các yếu tố tương tự.

Xin lưu ý rằng lệnh gọi đến adBreak() có thể không hiển thị quảng cáo nào. Thao tác này chỉ khai báo một vị trí mà quảng cáo có thể xuất hiện.

Điều này khác với các API truyền thống, trong đó mã của bạn luôn biết liệu có quảng cáo hay không và bạn quyết định trong trò chơi xem có nên hiển thị quảng cáo hay không. Phương pháp cho phép Ad Placement API quyết định xem quảng cáo có hiển thị ở một vị trí cụ thể hay không là một mẫu đôi khi được gọi là "đảo ngược quyền kiểm soát".

Lý do chúng tôi chuyển API trò chơi sang mô hình này là vì trước hết, mô hình này giúp rút ngắn mã mà bạn phải viết trong trò chơi. Thứ hai, việc này giúp chúng tôi dễ dàng cung cấp các vị trí tuân thủ chính sách với trải nghiệm người dùng tuyệt vời, nhờ đó chúng tôi có thể cung cấp một số định dạng hoạt động hiệu quả nhất cho nhà xuất bản trò chơi. Cuối cùng, nó tách biệt rõ ràng hơn quy trình đặt quảng cáo trong trò chơi của bạn với các quyết định kiếm tiền về loại và số lượng quảng cáo cần hiển thị.

Chúng tôi muốn bạn có thể thay đổi chế độ cài đặt kiếm tiền và kiểm soát trải nghiệm người dùng mà không cần chỉnh sửa và phát hành phiên bản mới của trò chơi, ban đầu bằng cách chỉ định các gợi ý trong thẻ. Tuy nhiên, trong các bản phát hành sau này, chúng tôi sẽ có thể cung cấp các chế độ kiểm soát ngay trong giao diện người dùng AdSense và AdMob.

Quảng cáo trung gian

Quảng cáo xen kẽ là quảng cáo toàn màn hình có thể xuất hiện ở nhiều thời điểm trong trò chơi của bạn, chẳng hạn như khi người chơi bắt đầu trò chơi hoặc sau khi người chơi hoàn thành một cấp độ. Quảng cáo này tạm dừng trò chơi, che phủ toàn bộ tài liệu và người chơi có thể chọn nhấp vào quảng cáo (trong trường hợp này, quảng cáo sẽ xuất hiện trong một thẻ khác của trình duyệt) hoặc đóng quảng cáo để tiếp tục chơi trò chơi.

Để đặt quảng cáo xen kẽ, hãy điền sẵn các trường sau trong placementconfig:

adBreak({
   type: 'start',           // The type of this placement
   name: 'game_started',    // A descriptive name for this placement
   beforeAd: beforeAd,      // Prepare for the ad. Mute and pause the game flow
   afterAd: afterAd,        // Resume the game and un-mute the sound
   adBreakDone: breakDone,  // Always called (if provided) even if an ad didn't show
});

Đối số type là bắt buộc và bạn luôn nên đặt tên cho vị trí của mình. Các lệnh gọi lại khác là không bắt buộc.

Trình tự cuộc gọi

Xem lại trình tự lệnh gọi cho quảng cáo xen kẽ.

Sơ đồ trình tự lệnh gọi quảng cáo xen kẽ

Mô tả

Quảng cáo xen kẽ – Trình tự gọi chi tiết
Trò chơi H5 của bạn Ad Placement API
  Khởi chạy và tải trước quảng cáo
Chạy trò chơi  

Đây là cơ hội tốt để hiển thị quảng cáo...

adBreak()

 
 

Có một quảng cáo và bây giờ là thời điểm thích hợp để hiển thị quảng cáo đó...

beforeAd()

Trò chơi tạm dừng, tắt tiếng và chuẩn bị hiển thị quảng cáo.

return đến API →

 
  API Vị trí đặt quảng cáo hiển thị quảng cáo xen kẽ. Người chơi có thể nhấp vào quảng cáo (quảng cáo sẽ hiển thị trong một thẻ mới). Họ phải đóng quảng cáo để tiếp tục chơi trò chơi.
  afterAd() được gọi nếu một quảng cáo đã hiển thị
Trò chơi sẽ tiếp tục và bật âm thanh.  
  adBreakDone()adBreakDone() luôn được gọi (ngay cả khi quảng cáo không hiển thị)
Trò chơi ghi lại số liệu phân tích về vị trí này.  

Ghi chú

  • adBreak() là một hàm không đồng bộ trả về ngay lập tức.
  • Nếu không có quảng cáo nào để hiển thị cho một vị trí, thì sẽ không có lệnh gọi lại nào được gọi,tức là không có lệnh gọi lại beforeAd(), afterAd() nào được gọi.
  • Để đảm bảo trò chơi của bạn không tiếp tục thực thi trong khi quảng cáo đang hiển thị, hãy sử dụng lệnh gọi lại beforeAd() để tắt tiếng và tạm dừng trò chơi.
  • beforeAd() là đồng bộ, Ad Placement API sẽ không hiển thị quảng cáo cho đến khi trả về.
  • Khởi động lại trò chơi và bật tiếng khi bạn nhận được cuộc gọi afterAd().
  • Nếu được cung cấp, adBreakDone() sẽ luôn được gọi ngay cả khi quảng cáo không xuất hiện ở vị trí này.
  • Việc gọi adBreak() trong khi một quảng cáo khác đang hiển thị sẽ không thành công và một cảnh báo sẽ xuất hiện trên bảng điều khiển JavaScript.

Quảng cáo đầu video

Quảng cáo đầu video là một quảng cáo xen kẽ xuất hiện trước khi trò chơi tải giao diện người dùng. Đây là nội dung đầu tiên mà người chơi nhìn thấy khi họ chuyển đến trò chơi của bạn. Vì quảng cáo trước video xuất hiện rất sớm trong quá trình tải trang và trò chơi của bạn chưa hiển thị, nên bạn không cần thực hiện các lệnh gọi thông thường để tạm dừng và tắt tiếng trò chơi. Thay vào đó, bạn sử dụng lệnh gọi lại adBreakDone() để sắp xếp trình tự bắt đầu trò chơi với quảng cáo, tức là hiển thị giao diện người dùng và bắt đầu phát âm thanh. Bạn chỉ có thể kích hoạt một quảng cáo phát trước cho mỗi lượt tải trang.

Trình tự cuộc gọi

Yêu cầu về quảng cáo phát trước được thực hiện rất sớm trong quá trình tải trang. Vì trò chơi của bạn chưa kết xuất giao diện người dùng tại thời điểm này, nên bạn không được truyền các lệnh gọi lại beforeAd()afterAd(). Thay vào đó, hãy sử dụng lệnh gọi lại adBreakDone() để bắt đầu trò chơi sau vị trí, vì lệnh gọi lại này chắc chắn sẽ được gọi ngay cả khi không có quảng cáo.

Sơ đồ trình tự lệnh gọi quảng cáo trước video

Việc gọi mã sau đây, ngay từ đầu trong logic trò chơi sẽ đặt một quảng cáo trước khi phát. Giao diện người dùng của bạn sẽ không được kết xuất trước khi mã này được gọi.

// Game must not be running.
// Nothing in the game area should be clickable
adBreak({
   type: preroll',
   adBreakDone: startGame,
})
Quảng cáo trước video – Trình tự cuộc gọi chi tiết
Trò chơi H5 của bạn Ad Placement API
  Bắt đầu khởi chạy API và lưu trước quảng cáo vào bộ nhớ đệm
Đang chạy nhưng chưa bắt đầu và chưa hiển thị giao diện người dùng  

adBreak(type:'preroll',…)

 
 

API Vị trí đặt quảng cáo hoàn tất quá trình khởi chạy và tải quảng cáo. Nếu có quảng cáo, quảng cáo đó sẽ xuất hiện. Người chơi có thể nhấp vào quảng cáo (quảng cáo sẽ hiển thị trong một thẻ mới). Họ phải đóng thông báo đó để trò chơi bắt đầu.

 

adBreakDone() luôn được gọi (ngay cả khi quảng cáo không hiển thị)

Giao diện người dùng của trò chơi được kết xuất ra màn hình và người chơi hiện có thể tương tác với giao diện đó. Trò chơi có thể sử dụng đối tượng placementInfo được truyền đến adBreakDone() khi cần (ví dụ: để ghi lại thông tin phân tích bổ sung).

 

Ghi chú

  • Quảng cáo trước video sẽ luôn cố gắng tải trước quảng cáo:
    • Bạn không bắt buộc phải gọi adConfig(preloadAds: ‘on') khi sử dụng quảng cáo trước video.
  • Giống như các vị trí đặt quảng cáo khác, quảng cáo trước video có thể hiển thị hoặc không hiển thị quảng cáo.
  • Không được truyền beforeAd()afterAd() vào quảng cáo phát trước.
    • Vì quảng cáo trước video chạy trước khi trò chơi của bạn bắt đầu, nên bạn không cần tạm dừng hoặc tắt âm thanh trò chơi.
    • Nếu bạn truyền beforeAd() hoặc afterAd() bằng một quảng cáo phát trước, thì lệnh gọi sẽ không thành công và một lỗi sẽ được ghi vào bảng điều khiển JavaScript.
  • Một quảng cáo trước video sẽ tự động chờ API Vị trí đặt quảng cáo khởi chạy và tải trước quảng cáo:
    • Tuy nhiên, có một thời gian chờ (2 giây) để ngăn lệnh gọi bị trì hoãn vô thời hạn. Điều này đảm bảo rằng adBreakDone() được gọi kịp thời và trò chơi của bạn sẽ bắt đầu.
    • adBreakDone() luôn được gọi ngay cả khi không có quảng cáo.
  • Bạn nên sử dụng quảng cáo trước video để đặt quảng cáo trước khi trò chơi bắt đầu.
    • Ngoài ra, bạn có thể sử dụng lệnh gọi lại onReady() đến adConfig() làm cơ chế để sắp xếp logic trò chơi theo trình tự với quá trình khởi chạy API và tải trước quảng cáo.

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

Quảng cáo có tặng thưởng cho phép bạn tặng cho người chơi các vật phẩm trong ứng dụng nếu họ chọn xem quảng cáo. Trong khi quảng cáo xen kẽ là chọn không sử dụng, người chơi sẽ thấy quảng cáo và có thể chọn đóng quảng cáo. Quảng cáo có tặng thưởng là quảng cáo chọn tham gia. Người chơi chọn xem quảng cáo (nếu có) và thời điểm xem quảng cáo để nhận phần thưởng.

Không giống như quảng cáo xen kẽ (người chơi có thể bỏ qua quảng cáo bất cứ lúc nào), để nhận được phần thưởng, người chơi phải xem quảng cáo trong một khoảng thời gian tối thiểu (có thể thay đổi tuỳ thuộc vào mẫu quảng cáo đang hiển thị).

Vì người chơi không bắt buộc phải xem quảng cáo có tặng thưởng, nên bạn cần tích hợp sâu hơn vào quy trình chơi của trò chơi. Bạn phải cung cấp các hàm để hiển thị lời nhắc về phần thưởng trong trò chơi và phân bổ phần thưởng cho người chơi nếu họ xem quảng cáo.

Phần thưởng không được có giá trị bên ngoài ứng dụng của bạn, không được có (hoặc dễ dàng đổi lấy) giá trị tiền tệ, không được bán hoặc đổi lấy hàng hoá và dịch vụ, đồng thời bạn không được khuyến khích người chơi nhấp vào quảng cáo. Vui lòng tham khảo chính sách nháp về quảng cáo xen kẽ và quảng cáo có tặng thưởng để biết thêm thông tin chi tiết.

Vì phần thưởng là không bắt buộc đối với người chơi, nên bạn có thể thêm phần thưởng ở bất kỳ vị trí nào phù hợp trong trò chơi và có thể sử dụng phần thưởng ngoài quảng cáo xen kẽ. Giống như quảng cáo xen kẽ, những vị trí này là cơ hội để hiển thị quảng cáo có tặng thưởng. API Vị trí đặt quảng cáo sẽ chỉ gọi mã của bạn nếu quảng cáo có tặng thưởng thực sự được cung cấp tại một thời điểm cụ thể trong trò chơi.

Mục tiêu ở đây là cho phép bạn tích hợp trò chơi của mình với AdPlacement API một lần, sau đó, theo thời gian, bằng cách sử dụng các chế độ kiểm soát trong thẻ hoặc trong AdSense, bạn có thể thay đổi chính xác hỗn hợp quảng cáo được kích hoạt mà không cần phải mã hoá lại và phát hành lại trò chơi của mình.

Loại vị trí được đặt phần thưởng luôn là 'reward' và bạn có thể dùng tất cả các trường trong cấu hình vị trí.

adBreak({
   type: 'reward',                      // The type of this placement
   name: '<name>',                      // A descriptive name for this placement
   beforeAd: () => {},                  // Prepare for the ad. Mute and pause the game flow
   afterAd: () => {},                   // Resume the game and re-enable sound
   beforeReward: (showAdFn) => {},      // Show reward prompt (call showAdFn() if clicked)
   adDismissed: () => {},               // Player dismissed the ad before it finished.
   adViewed: () => {},                  // Player watched the ad–give them the reward.
   adBreakDone: (placementInfo) => {},  // Always called (if provided) even if an ad didn't show
});

Các hàm mới chính là beforeReward() (trình kích hoạt báo hiệu rằng bạn nên hiển thị lời nhắc về phần thưởng) và adViewed() (được gọi khi người chơi đã xem quảng cáo thành công, nhờ đó bạn có thể phân bổ phần thưởng cho họ).

Bạn có thể xác định một vị trí có tặng thưởng như sau:

adBreak({
   type: 'reward',
   name: 'new_life_reward_1',
   beforeAd: pauseGame,
   afterAd: restartGame,
   beforeReward: showRewardPrompt,
   adDismissed: adDismissed,
   adViewed: adViewed,
   adBreakDone: breakDone,
});

Quảng cáo có tặng thưởng bắt đầu bằng một lời nhắc trong trò chơi của bạn, đề nghị người chơi nhận phần thưởng nếu họ xem quảng cáo.

Ví dụ về lời nhắc quảng cáo: Xem video để có thêm mạng

Trình tự gọi cho quảng cáo có tặng thưởng

Sơ đồ trình tự cuộc gọi có tặng thưởng

Mô tả

Quảng cáo có tặng thưởng – Trình tự chi tiết của lệnh gọi
Trò chơi H5 của bạn Ad Placement API
  Khởi chạy và lưu trước quảng cáo vào bộ nhớ đệm
Chạy trò chơi  

adBreak(type:'reward', ... )

 
 

Có một quảng cáo nên hãy bắt đầu vị trí đặt quảng cáo có tặng thưởng. beforeReward() được gọi đồng bộ – ngay sau khi gọi adBreak()

beforeReward(showAdFn)

Trò chơi hiển thị lời nhắc về phần thưởng. Điều này mang đến cho người chơi cơ hội nhận được phần thưởng bằng cách xem quảng cáo. Bạn có thể cung cấp nhiều loại phần thưởng (ví dụ: mạng chơi mới hoặc xu vàng).

Người chơi có thể nhấp vào lời nhắc về phần thưởng, bỏ qua hoặc đơn giản là không để ý đến chúng.

Nếu người dùng nhấp vào một lời nhắc, thì trò chơi sẽ lưu trữ loại phần thưởng mà họ yêu cầu và gọi showAdFn()...

Nếu không, nếu lời nhắc về phần thưởng bị loại bỏ hoặc bỏ qua, thì sẽ không có gì xảy ra cho đến khi bạn thực hiện một lệnh gọi khác đến adBreak() bằng một loại vị trí đặt phần thưởng. Tại thời điểm đó, Ad Placement API sẽ đặt lại và dọn dẹp trạng thái từ lệnh gọi này. Nếu ứng dụng gọi showAdFn từ một khoảng thời gian chèn quảng cáo trước đó, thì lệnh gọi này sẽ không có hiệu lực.

 

showAdFn()

 
  beforeAd()

Trò chơi tạm dừng, tắt tiếng và chuẩn bị hiển thị quảng cáo

return đến API →

 
  API này hiển thị quảng cáo. Quảng cáo này có nút loại bỏ và một bộ đếm ngược cho biết thời gian còn lại của quảng cáo.
NẾU trình phát đóng quảng cáo...
  adDismissed()
Người chơi đã bỏ qua quảng cáo và trò chơi không tặng thưởng.  
ELSE người chơi xem hết quảng cáo...
  adViewed()
Người chơi đã xem hết quảng cáo và trò chơi tặng thưởng. (Thường thì bạn sẽ làm việc này bằng cách đặt một số trạng thái trò chơi, sau đó trạng thái này sẽ được chọn khi trò chơi khởi động lại bằng lệnh gọi đến afterAd() bên dưới).  
Sau khi người dùng xem hoặc bỏ qua quảng cáo...
  afterAd() được gọi nếu một quảng cáo đã hiển thị
Trò chơi sẽ tiếp tục và bật âm thanh.  
  adBreakDone()adBreakDone() luôn được gọi (ngay cả khi quảng cáo không hiển thị)
Trò chơi ghi lại số liệu phân tích về vị trí này.  

Ghi chú

  • adBreak() là một hàm không đồng bộ trả về ngay lập tức.
  • Nếu không có quảng cáo nào để hiển thị cho một vị trí, thì sẽ không có lệnh gọi lại nào được gọi, tức là không có lệnh gọi lại beforeAd(), beforeReward() nào được gọi.
  • Để đảm bảo trò chơi của bạn không tiếp tục thực thi trong khi quảng cáo đang hiển thị, hãy sử dụng lệnh gọi lại beforeAd() để tắt tiếng và tạm dừng trò chơi.
  • beforeAd() là đồng bộ, Ad Placement API sẽ không hiển thị quảng cáo cho đến khi trả về.
  • Khởi động lại trò chơi và bật tiếng khi bạn nhận được cuộc gọi afterAd().
  • Nếu được cung cấp, adBreakDone() sẽ luôn được gọi ngay cả khi quảng cáo không xuất hiện ở vị trí này.
  • Việc gọi adBreak() trong khi một quảng cáo khác đang hiển thị sẽ không thành công và một cảnh báo sẽ xuất hiện trên bảng điều khiển JavaScript.