Quảng cáo trong ứng dụng dành cho Trò chơi tức thì

Bạn có thể kiếm tiền từ trò chơi của mình bằng cách hiển thị quảng cáo cho người chơi. Hiện có 2 định dạng quảng cáo Audience Network được tích hợp với trò chơi tức thì: Video kèm phần thưởng và Quảng cáo chèn giữa. Phần này sẽ hướng dẫn bạn về quy trình tích hợp giải pháp Kiếm tiền từ quảng cáo với trò chơi tức thì.

Tính khả dụng của định dạng

Nền tảngChèn giữaChèn giữa kèm phần thưởngVideo kèm phần thưởng

Android

iOS

Web di động

Web trên máy tính

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

  • Bạn đã tạo ít nhất một Vị trí quảng cáo, trong thuộc tính được liên kết với trò chơi của bạn trong Trình quản lý kiếm tiền.
  • Bạn có thể thử nghiệm các bản dựng của mình trên thiết bị di động hoặc trên Facebook.com.

Lưu ý: Audience Network hiện chỉ dành cho một số khu vực nhất định. Hãy kiểm tra tính đủ điều kiện của bạn trong quy trình tích hợp Audience Network.

Hãy xem hướng dẫn 5 bước để kiếm tiền từ Trò chơi tức thì trên Audience Network để biết thêm thông tin.

Đặt cấu hình ứng dụng trên Facebook

Tải mẫu xuống

Nếu đã đặt cấu hình ứng dụng bằng Trình quản lý kiếm tiền và tạo Vị trí quảng cáo, bạn có thể xem cách hoạt động của mã bên dưới bằng cách tải xuống bản demo của chúng tôi:

Tải xuống bản demo quảng cáo (.zip)

Hiển thị quảng cáo chèn giữa

Quảng cáo chèn giữa là quảng cáo toàn màn hình sẽ hiển thị vào thời điểm chuyển tiếp tự nhiên trong ứng dụng. Quảng cáo chèn giữa hiện có ở định dạng tự động phát hoặc nhấp để phát. Quảng cáo tự động phát sẽ bắt đầu phát ngay khi video chèn giữa tải; theo mặc định, có thể bỏ qua các video này sau 3 giây. Thời lượng quảng cáo tối đa là 2 phút.

Đoạn mã dưới đây minh họa ví dụ về cách hiển thị Quảng cáo chèn giữa.

Để mã này hoạt động, trước tiên, bạn phải tạo một vị trí quảng cáo có định dạng hiển thị là Chèn giữa. Bạn nên dùng vị trí quảng cáo khác cho từng đơn vị quảng cáo trong ứng dụng của mình.

Tải trước quảng cáo

var preloadedInterstitial = null;

FBInstant.getInterstitialAdAsync(
  '123123123123_123123123123' // Your Ad Placement Id
).then(function(interstitial) {
  // Load the Ad asynchronously
  preloadedInterstitial = interstitial;
  return preloadedInterstitial.loadAsync();
}).then(function() {
  console.log('Interstitial preloaded');
}).catch(function(err){
  console.error('Interstitial failed to preload: ' + err.message);
});

Hiển thị quảng cáo

preloadedInterstitial.showAsync()
.then(function() {
  // Perform post-ad success operation
  console.log('Interstitial ad finished successfully');        
})
.catch(function(e) {
  console.error(e.message);
});

Hiển thị quảng cáo chèn giữa kèm phần thưởng

Chèn giữa kèm phần thưởng là quảng cáo toàn màn hình tặng phần thưởng cho người dùng để đổi lấy lượt xem quảng cáo. Những quảng cáo này không yêu cầu người dùng chọn xem.

Đoạn mã dưới đây minh họa ví dụ về cách hiển thị quảng cáo Chèn giữa kèm phần thưởng.

Để mã này hoạt động, trước tiên, bạn phải tạo một vị trí quảng cáo có định dạng hiển thị là Chèn giữa kèm phần thưởng. Quảng cáo chèn giữa kèm phần thưởng sử dụng được cho ứng dụng trên Facebook Gaming, Web di động và Web trên máy tính. Bạn nên dùng vị trí quảng cáo khác cho từng đơn vị quảng cáo trong ứng dụng của mình.

Tải trước quảng cáo

var preloadedRewardedInterstitial = null;

FBInstant.getRewardedInterstitialAsync(
  '123123123123_123123123123' // Your Ad Placement Id
).then(function(rewarded) {
  // Load the Ad asynchronously
  preloadedRewardedInterstitial = rewarded;
  return preloadedRewardedInterstitial.loadAsync();
}).then(function() {
  console.log('Rewarded interstitial preloaded');
}).catch(function(err){
  console.error('Rewarded interstitial failed to preload: ' + err.message);
});

Hiển thị quảng cáo

preloadedRewardedInterstitial.showAsync()
.then(function() {
  // Perform post-ad success operation
  console.log('Rewarded interstitial watched successfully');        
})
.catch(function(e) {
  console.error(e.message);
});

Hiển thị quảng cáo video kèm phần thưởng

Quảng cáo video kèm phần thưởng là trải nghiệm toàn màn hình, trong đó người dùng chọn xem quảng cáo video để đổi lấy thứ gì đó có giá trị, chẳng hạn như tiền ảo, vật phẩm trong ứng dụng hoặc nội dung độc quyền.

Đoạn mã dưới đây minh họa ví dụ về cách hiển thị Quảng cáo video kèm phần thưởng.

Để mã này hoạt động, trước tiên, bạn phải tạo một vị trí quảng cáo có định dạng hiển thị là Video kèm phần thưởng. Bạn nên dùng vị trí quảng cáo khác cho từng đơn vị quảng cáo trong ứng dụng của mình.

Tải trước quảng cáo

var preloadedRewardedVideo = null;

FBInstant.getRewardedVideoAsync(
  '456456456456_456456456456' // Your Ad Placement Id
).then(function(rewarded) {
  // Load the Ad asynchronously
  preloadedRewardedVideo = rewarded;
  return preloadedRewardedVideo.loadAsync();
}).then(function() {
  console.log('Rewarded video preloaded');
}).catch(function(err){
  console.error('Rewarded video failed to preload: ' + err.message);
});

Hiển thị quảng cáo

preloadedRewardedVideo.showAsync()
.then(function() {
  // Perform post-ad success operation
  console.log('Rewarded video watched successfully');        
})
.catch(function(e) {
  console.error(e.message);
});

Vòng đời của phiên bản quảng cáo

Việc tải trước 3 phiên bản quảng cáo cùng loại mà không hiển thị quảng cáo sẽ gây ra lỗi khi bạn cố tạo một quảng cáo mới. Sau khi tải thành công, quảng cáo sẽ có hiệu lực trong 60 phút.

Dưới đây là một mã mẫu để giúp bạn hiểu cách thức hoạt động, giả sử mọi thứ đều được đặt cấu hình đúng cách (ID vị trí quảng cáo hợp lệ, v.v.) và không có vấn đề về mạng:

var preloadedInterstitial1 = null;
var preloadedInterstitial2 = null;
var preloadedInterstitial3 = null;
var preloadedRewardedVideo = null;

// PRELOAD PHASE
FBInstant.getInterstitialAdAsync(
  '123123123123_123123123123'
).then(function(interstitial) {
  // This should get called, meaning you now have 1 ad instance.
  preloadedInterstitial1 = interstitial;
  return preloadedInterstitial1.loadAsync();
}).then(function() {
  // This should get called unless we do not have ads to serve.
  console.log('Interstitial 1 preloaded')
}).catch(function(err){
  // This would be called only if we do not have ads to serve.
  // The error would then be ADS_NO_FILL.
  // You can try to reload the ad after some time (ideally over 30 seconds).
  // If you get ADS_NO_FILL 3 times in a row, the instance will be disabled.
  console.error('Interstitial 1 failed to preload: ' + err.message);
  // You can try to reload after 30 seconds (2nd attempt)
  setTimeout(function () { handleAdsNoFill(preloadedInterstitial1, 2); }, 30 * 1000);
});

// Here is how the function to handle ADS_NO_FILL would look like
function handleAdsNoFill (adInstance, attemptNumber) {
  if (attemptNumber > 3) {
    // You can assume we will not have to serve in the current session, no need to try
    // to load another ad.
    return;
  } else {
    adInstance.loadAsync().then(function() {
      // This should get called if we finally have ads to serve.
      console.log('Interstitial preloaded')
    }).catch(function(err){
      console.error('Interstitial failed to preload: ' + err.message);
      // You can try to reload after 30 seconds
      setTimeout(function () {
        handleAdsNoFill(adInstance, attemptNumber+1);
      }, 30 * 1000);
    });
  }
}

// As we covered ADS_NO_FILL, from now on let's assume we have ads to serve.
FBInstant.getInterstitialAdAsync(
  // You can re-use the same Ad Placement Id as long as it is of the valid type:
  // interstitial or rewarded video (here, it has to be interstitial)
  '123123123123_123123123123'
).then(function(interstitial) {
  // This should get called, meaning you now have 2 ad instances.
  preloadedInterstitial2 = interstitial;
  return preloadedInterstitial2.loadAsync();
}).then(function() {
  console.log('Interstitial 2 preloaded')
});

FBInstant.getRewardedVideoAsync(
  '456456456456_456456456456'
).then(function(rewarded) {
  // This should get called, meaning you now have 3 ad instances.
  preloadedRewardedVideo = rewarded;
  return preloadedRewardedVideo.loadAsync();
}).then(function() {
  console.log('Rewarded video preloaded')
});

FBInstant.getInterstitialAdAsync(
  '123123123123_123123123123'
).catch(function(err){
  // This should be called now because you already have 3 ad instances.
  // The error would then be ADS_TOO_MANY_INSTANCES.
  console.error('Interstitial 3 failed to preload: ' + err.message);
});

// SHOWING ADS (at a timing that makes sense in the workflow of your game)
preloadedInterstitial1.showAsync()
.then(function() {
  // This should get called, meaning you now have 2 ad instances.
  console.log('Interstitial ad 1 finished successfully');        
});

// A bit later, assuming you did not preload a new instance yet.
preloadedInterstitial2.showAsync()
.then(function() {
  // This should get called, meaning you now have 1 ad instance.
  console.log('Interstitial ad finished successfully');        
});

// A bit later, assuming you did not preload a new instance yet.
preloadedRewardedVideo.showAsync()
.then(function() {
  // This should get called, meaning you now have no ad instance.
  console.log('Rewarded video watched successfully');        
});

Cách làm tốt nhất và khắc phục sự cố

Thông tin dưới đây dành riêng cho Trò chơi tức thì. Vui lòng tham khảo cả phần Thông tin chi tiết về Audience Network của chúng tôi.

Định thời gian quảng cáo thích hợp. Đảm bảo quảng cáo trong trò chơi của bạn không làm gián đoạn trải nghiệm của người chơi.

Tải trước quảng cáo. Đừng chờ đến phút cuối mới yêu cầu, hãy tải trước và hiển thị quảng cáo cùng lúc. Đảm bảo bạn đã tải trước một số phiên bản quảng cáo để người chơi không phải đợi quá lâu khi yêu cầu xem quảng cáo.

Kiểm tra xem có hỗ trợ hay không. Trong một số trường hợp, phiên của người chơi sẽ không hỗ trợ quảng cáo (ví dụ: nếu họ đang chơi trên trình duyệt dành cho máy tính). Bạn nên kiểm tra xem quảng cáo có được hỗ trợ FBInstant.getSupportedAPIs() hay không trước khi cố yêu cầu quảng cáo.

Triển khai xử lý khéo léo thông báo "Không thực hiện". Một số trường hợp có thể khiến không thực hiện được quảng cáo. Trong trường hợp đó, cam kết sẽ từ chối kèm theo thông báo lỗi ADS_NO_FILL. Hãy đảm bảo game của bạn xử lý vấn đề này một cách linh hoạt, hiển thị thông báo thân thiện và chờ 30 giây rồi mới yêu cầu một quảng cáo khác cùng loại.

Thử nghiệm quảng cáo trước khi gửi. Với vai trò nhà phát triển ứng dụng, bạn có thể yêu cầu quảng cáo trên thiết bị di động và thấy rằng tiện ích tích hợp của bạn đang hoạt động, ngay cả trước khi bạn gửi ứng dụng đi xét duyệt trên Audience Network.

Theo dõi lượt hiển thị quảng cáo. Bạn có thể sử dụng sự kiện tùy chỉnh để theo dõi lượt hiển thị quảng cáo khi showAsync phân giải.

Không duy trì quá nhiều Phiên bản quảng cáo. Cả hai phương thức getRewardedVideoAsync hoặc getInterstitialAdAsync đều trả về AdInstance có thể được tải trước. Việc tải trước 3 Phiên bản quảng cáo cùng loại trở lên mà không hiển thị quảng cáo sẽ khiến bạn liên tiếp không tạo được Phiên bản quảng cáo mới. Tức là các lệnh gọi đến getRewardedVideoAsyncgetInterstitialAdAsync sẽ bị lỗi kèm theo mã lỗi ADS_TOO_MANY_INSTANCES cho đến khi showAsync được gọi hoặc cho đến khi người chơi khởi động lại Messenger.