Iklan dalam Aplikasi untuk Game Instan

Anda dapat memonetisasi game dengan menampilkan iklan kepada para pemain. Saat ini ada dua format iklan Audience Network yang terintegrasi dengan game instan: Video Berhadiah dan Iklan Interstisial. Bagian ini akan memandu Anda melalui proses mengintegrasikan Monetisasi Iklan dengan game instan Anda.

Ketersediaan Format

PlatformInterstisialInterstisial BerhadiahVideo Berhadiah

Android

iOS

Web Seluler

Web Desktop

Prasyarat

  • Anda telah membuat setidaknya satu Penempatan Iklan, dalam properti yang terkait dengan game Anda di Pengelola Monetisasi.
  • Anda dapat menguji build Anda di perangkat seluler atau di Facebook.com.

Catatan: Audience Network saat ini terbatas di wilayah tertentu. Periksa apakah Anda berhak dalam alur onboarding Audience Network.

Lihat panduan 5 Langkah untuk Memonetisasi Game Instan Audience Network untuk informasi selengkapnya.

Konfigurasikan Aplikasi Facebook

Mengunduh Contoh

Jika Anda telah mengonfigurasi aplikasi Anda dengan Pengelola Monetisasi dan telah membuat Penempatan Iklan, Anda dapat melihat kode contoh di bawah ini beraksi dengan mengunduh demo kami:

Unduh Demo Iklan (.zip)

Menampilkan Iklan Interstisial

Interstisial adalah iklan layar penuh yang muncul pada titik transisi alami di aplikasi Anda. Interstisial ada dalam format putar otomatis atau klik untuk putar. Iklan putar otomatis akan mulai diputar segera setelah interstisial dimuat; iklan ini dapat dilewati setelah 3 detik secara default. Durasi iklan maksimal adalah dua menit.

Snippet kode di bawah ini menunjukkan contoh cara menampilkan iklan Interstisial.

Agar kode ini berfungsi, Anda harus terlebih dahulu membuat penempatan iklan dengan format tampilan Interstisial. Anda sebaiknya menggunakan penempatan yang berbeda untuk setiap unit iklan di aplikasi Anda.

Pramuat Iklan

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);
});

Menampilkan Iklan

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

Menampilkan Iklan Interstisial Berhadiah

Interstisial berhadiah adalah iklan layar penuh yang memberikan insentif kepada pengguna sebagai ganti menonton iklan. Iklan ini tidak mewajibkan pengguna untuk ikut serta.

Snippet kode di bawah ini menunjukkan contoh cara menampilkan iklan Interstisial Berhadiah.

Agar kode ini berfungsi, Anda harus terlebih dahulu membuat penempatan iklan dengan format tampilan Interstisial Berhadiah. Iklan Interstisial Berhadiah tersedia untuk aplikasi Facebook Gaming, Web Seluler, dan Web Desktop. Anda sebaiknya menggunakan penempatan yang berbeda untuk setiap unit iklan di aplikasi Anda.

Pramuat Iklan

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);
});

Menampilkan Iklan

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

Menampilkan Iklan Video Berhadiah

Iklan video berhadiah adalah pengalaman layar penuh tempat pengguna memilih untuk melihat iklan video dengan imbalan sesuatu yang bernilai, seperti mata uang virtual, item dalam-aplikasi, atau konten eksklusif.

Snippet kode di bawah menunjukkan contoh cara menampilkan iklan Video Berhadiah.

Agar kode ini berfungsi, Anda harus terlebih dahulu membuat penempatan iklan dengan format tampilan Video Berhadiah. Anda sebaiknya menggunakan penempatan yang berbeda untuk setiap unit iklan di aplikasi Anda.

Pramuat iklan

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);
});

Menayangkan iklan

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

Siklus hidup instance iklan

Pramuat tiga instance iklan dengan jenis yang sama tanpa menampilkannya akan menyebabkan kegagalan ketika Anda mencoba membuat iklan baru. Setelah iklan berhasil dimuat, iklan akan valid selama 60 menit.

Berikut adalah contoh kode untuk membantu Anda memahami cara kerjanya, dengan asumsi semuanya telah dikonfigurasi dengan benar (ID penempatan iklan yang valid, dsb.) Dan tidak ada masalah jaringan:

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');        
});

Praktik Terbaik dan Pemecahan Masalah

Informasi di bawah adalah khusus Game Instan. Baca juga Insight Audience Network kami.

Atur waktu iklan dengan benar. Pastikan iklan di game Anda tidak mengganggu pengalaman pemain.

Pramuat iklan. Jangan menunggu hingga menit terakhir untuk meminta, melakukan pramuat, dan menayangkan iklan secara bersamaan. Pastikan Anda memiliki beberapa pramuat Instance Iklan, sehingga ketika pemain meminta untuk melihatnya, mereka tidak perlu menunggu terlalu lama.

Periksa untuk dukungan. Dalam beberapa kasus, sesi pemain tidak mendukung iklan (misal: jika diputar di browser desktop). Anda harus selalu memeriksa apakah iklan didukung dengan FBInstant.getSupportedAPIs() sebelum mencoba untuk meminta iklan.

Menerapkan penanganan "Tanpa isi" dengan baik. Beberapa kondisi mungkin menyebabkan iklan tidak diisi. Dalam kasus tersebut, janji akan ditolak dengan pesan kesalahan ADS_NO_FILL. Pastikan game Anda menangani ini dengan anggun, tunjukkan pesan yang ramah, dan tunggu 30 detik sebelum meminta iklan lain dari jenis yang sama.

Uji iklan Anda sebelum mengirimkan. Sebagai developer aplikasi, Anda dapat meminta iklan di seluler dan melihat apakah integrasi Anda berfungsi, bahkan sebelum Anda mengirimkan aplikasi untuk tinjauan Audience Network.

Melacak impresi iklan. Anda dapat menggunakan peristiwa khusus untuk melacak impresi iklan ketika showAsync selesai.

Jangan Tahan Terlalu Banyak Instance Iklan. Kedua metode getRewardedVideoAsync atau getInterstitialAdAsync memberikan AdInstance yang dapat dipramuat. Melakukan pramuat 3 Instance Iklan atau lebih dari jenis yang sama tanpa menayangkannya akan menyebabkan gagalnya upaya pembuatan Instance Iklan baru. Ini berarti panggilan ke getRewardedVideoAsync dan getInterstitialAdAsync akan gagal dengan kode kesalahan ADS_TOO_MANY_INSTANCES sampai showAsync dipanggil atau pemain memulai ulang Messenger.