Вы можете монетизировать свою игру за счет показа рекламы пользователям. В настоящее время существует два формата объявлений Audience Network, интегрируемых с моментальными играми: видео с вознаграждением и межстраничная реклама. В этом разделе рассказано, как последовательно интегрировать монетизацию рекламы с моментальной игрой.
Платформа | Межстраничная реклама | Межстраничная реклама с вознаграждением | Видео с вознаграждением |
---|---|---|---|
Android | ✅ | ✅ | ✅ |
iOS | ✅ | ✅ | ✅ |
Мобильный браузер | ✅ | ✅ | ✅ |
Браузер на компьютере | ✅ | ✅ | ✅ |
Примечание. Доступность Audience Network в некоторых регионах в настоящее время ограничена. Проверьте соответствие требованиям для использования Audience Network в соответствующем процессе регистрации.
Дополнительные сведения см. в руководстве "Как начать монетизировать Моментальные игры в 5 шагов" для Audience Network.
Настроить приложение FacebookЕсли вы уже настроили свое приложение в Monetization Manager и создали места размещения объявлений, можно проверить в действии пример кода, скачав нашу демонстрацию:
Скачать демо рекламы (ZIP)Межстраничное объявление — это полноэкранная реклама, которая появляется в приложении в промежуточные моменты. Межстраничное объявление запускается автоматически или по нажатию. Реклама с автозапуском воспроизводится сразу после загрузки вставки. По умолчанию ее можно пропустить через 3 секунды. Максимальная продолжительность такой рекламы — две минуты.
Во фрагменте кода ниже показан пример демонстрации межстраничной рекламы.
Чтобы код выполнялся правильно, сначала нужно создать место размещения для рекламы с медийным форматом межстраничной рекламы. Для каждого рекламного блока в приложении следует использовать отдельное место размещения.
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); });
preloadedInterstitial.showAsync() .then(function() { // Perform post-ad success operation console.log('Interstitial ad finished successfully'); }) .catch(function(e) { console.error(e.message); });
Межстраничная реклама с вознаграждением — это полноэкранное объявление, которое предоставляет пользователю бонус за просмотр рекламы. Для таких объявлений согласие пользователей не требуется.
Во фрагменте кода ниже показан пример демонстрации межстраничной рекламы с вознаграждением.
Чтобы код выполнялся правильно, сначала нужно создать место размещения для рекламы с медийным форматом межстраничной рекламы с вознаграждением. Межстраничная реклама с вознаграждением доступна только для приложений Facebook Gaming, мобильных браузеров и веб-приложений для ПК. Для каждого рекламного блока в приложении следует использовать отдельное место размещения.
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); });
preloadedRewardedInterstitial.showAsync() .then(function() { // Perform post-ad success operation console.log('Rewarded interstitial watched successfully'); }) .catch(function(e) { console.error(e.message); });
Видео с вознаграждением — это полноэкранная видеореклама, за просмотр которой пользователи получают бонус: виртуальную валюту, игровые предметы или эксклюзивный контент.
Во фрагменте кода ниже показан пример демонстрации рекламного видео с вознаграждением.
Чтобы код выполнялся правильно, сначала нужно создать место размещения для рекламы с медийным форматом видео с вознаграждением. Для каждого рекламного блока в приложении следует использовать отдельное место размещения.
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); });
preloadedRewardedVideo.showAsync() .then(function() { // Perform post-ad success operation console.log('Rewarded video watched successfully'); }) .catch(function(e) { console.error(e.message); });
Если предварительно загрузить три экземпляра объявлений одного типа и не показать их, попытка создать новое объявление завершится ошибкой. После успешной загрузки объявление действительно в течение 60 минут.
Вот пример кода, который поможет понять, как это работает, при условии, что всё настроено правильно (указаны действительные ID мест размещения рекламы и т. п.) и в работе сети нет неполадок:
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'); });
Приведенная ниже информация относится к моментальным играм. Также ознакомьтесь с нашей статистикой Audience Network.
Выбирайте подходящее время для показа рекламы. Следите за тем, чтобы объявления не мешали пользователю играть.
Загружайте объявления заранее. Не пытайтесь в последнюю минуту запросить, загрузить и одновременно показать объявление. Вместо этого загрузите несколько экземпляров объявлений, чтобы в момент, когда пользователь захочет их посмотреть, ему не пришлось ждать слишком долго.
Проверьте поддержку. В некоторых игровых сеансах реклама не поддерживается (например, при игре в браузере на компьютере). Прежде чем отправлять запрос на объявление, всегда проверяйте, поддерживается ли реклама, с помощью FBInstant.getSupportedAPIs()
.
Реализуйте надлежащую обработку событий отсутствия заполнения. В определенных условиях место размещения объявления не заполняется. В этом случае вы получаете отказ с сообщением об ошибке ADS_NO_FILL
. Убедитесь, что игра корректно обрабатывает такие ситуации, покажите понятное сообщение и подождите 30 секунд, прежде чем отправлять запрос для ещё одного объявления того же типа.
Тестируйте объявления перед отправкой. Разработчик приложения может запрашивать рекламу на мобильном устройстве и проверять работу своей интеграции ещё до отправки приложения на проверку Audience Network.
Отслеживайте показы рекламы. Для отслеживания показов рекламы используйте специально настроенные события после разрешения showAsync
.
Не используйте слишком много объектов AdInstances. Методы getRewardedVideoAsync
и getInterstitialAdAsync
возвращают объект экземпляра объявления AdInstance
, который можно предварительно загрузить. Если вы предварительно загрузили три и более экземпляра объявлений одного типа, но не показали их, все последующие попытки создать объект AdInstance будут завершаться ошибкой. Это означает, что вызовы getRewardedVideoAsync
и getInterstitialAdAsync
будут возвращать ошибку с кодом ADS_TOO_MANY_INSTANCES
до тех пор, пока не будет вызван метод showAsync
или пользователь не перезапустит Messenger.