Audience Network позволяет монетизировать приложения для Android и iOS за счет рекламы Facebook. Рекламные вставки отображаются в полноэкранном режиме и могут использоваться как точки переходов в потоке приложения, например между действиями или во время паузы между уровнями в игре. Контентом могут быть изображения, видео и кольцевые галереи. В этом руководстве описано, как добавить рекламную вставку в ваше приложение.
Прежде чем продолжить, обязательно ознакомьтесь с руководствами по началу работы с Audience Network и Unity.
Первый шаг для показа рекламной вставки — создание объекта InterstitialAd
в скрипте C#, прикрепленном к GameObject
.
... using AudienceNetwork; ... public class InterstitialAdTest : MonoBehaviour { ... private InterstitialAd interstitialAd; private bool isLoaded; ... public void LoadInterstitial() { this.interstitialAd = new InterstitialAd("YOUR_PLACEMENT_ID"); this.interstitialAd.Register(this.gameObject); // Set delegates to get notified on changes or when the user interacts with the ad. this.interstitialAd.InterstitialAdDidLoad = (delegate() { Debug.Log("Interstitial ad loaded."); this.isLoaded = true; }); interstitialAd.InterstitialAdDidFailWithError = (delegate(string error) { Debug.Log("Interstitial ad failed to load with error: " + error); }); interstitialAd.InterstitialAdWillLogImpression = (delegate() { Debug.Log("Interstitial ad logged impression."); }); interstitialAd.InterstitialAdDidClick = (delegate() { Debug.Log("Interstitial ad clicked."); }); this.interstitialAd.interstitialAdDidClose = (delegate() { Debug.Log("Interstitial ad did close."); if (this.interstitialAd != null) { this.interstitialAd.Dispose(); } }); // Initiate the request to load the ad. this.interstitialAd.LoadAd(); } ... }
Конструктор объекта InterstitialAd
использует следующие параметры:
placementId
— ID места размещения Audience Network для данного блока рекламной вставки.После этого можно добавить несколько обратных вызовов, чтобы подписаться на события жизненного цикла рекламы. Для отслеживания этих событий нужно зарегистрировать делегат для события, как показано в следующем примере:
... // Set delegates to get notified on changes or when the user interacts with the ad. this.interstitialAd.InterstitialAdDidLoad = (delegate() { Debug.Log("Interstitial ad loaded."); this.isLoaded = true; }); interstitialAd.InterstitialAdDidFailWithError = (delegate(string error) { Debug.Log("Interstitial ad failed to load with error: " + error); }); interstitialAd.InterstitialAdWillLogImpression = (delegate() { Debug.Log("Interstitial ad logged impression."); }); interstitialAd.InterstitialAdDidClick = (delegate() { Debug.Log("Interstitial ad clicked."); }); this.interstitialAd.interstitialAdDidClose = (delegate() { Debug.Log("Interstitial ad did close."); if (this.interstitialAd != null) { this.interstitialAd.Dispose(); } }); ...
Эта информация относится только к Android.
В настоящее время в играх Unity для Android для основного объекта Unity Activity
поддерживается только режим запуска (launchMode
) singleTask
. См. документацию Unity по манифестам Android и документацию Android по действиям.
Поскольку мы используем Activity
для показа рекламных объявлений Interstitial
и Rewarded Video
, действие рекламы может быть уничтожено, не будучи надлежащим образом закрыто, когда пользователь переводит приложение в фоновый режим, а затем перезапускает его с помощью значка, а не средства переключения между приложениями. Проверить, было ли объявление закрыто пользователем, можно с помощью приведенных ниже обратных вызовов.
Для вставок:
this.interstitialAd.interstitialAdDidClose = (delegate() { Debug.Log("Interstitial ad did close."); this.didClose = true; if (this.interstitialAd != null) { this.interstitialAd.Dispose(); } }); #if UNITY_ANDROID /* * Только для Android. * Этот обратный вызов срабатывает только в том случае, если действие со вставкой * было уничтожено, а не закрыто надлежащим образом. Это может произойти, если * приложение с launchMode:singleTask (например, игра Unity) переходит * в фоновый режим, а затем перезапускается касанием значка. */ this.interstitialAd.interstitialAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Interstitial activity destroyed without being closed first."); Debug.Log("Game should resume."); } }); #endif
Для видео с бонусами:
this.rewardedVideoAd.rewardedVideoAdDidClose = (delegate() { Debug.Log("Rewarded video ad did close."); this.didClose = true; if (this.rewardedVideoAd != null) { this.rewardedVideoAd.Dispose(); } }); #if UNITY_ANDROID /* * Только для Android. * Этот обратный вызов срабатывает только в том случае, если действие с видео с бонусами * было уничтожено, а не закрыто надлежащим образом. Это может произойти, если * приложение с launchMode:singleTask (например, игра Unity) переходит * в фоновый режим, а затем перезапускается касанием значка. */ this.rewardedVideoAd.rewardedVideoAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Rewarded video activity destroyed without being closed first."); Debug.Log("Game should resume. User should not get a reward."); } }); #endif
После создания экземпляра InterstitialAd
следующим этапом является загрузка рекламного объявления. Для этого используется метод loadAd() класса InterstitialAd
.
Вот как загрузить объявление в показанном выше примере:
... this.interstitialAd.LoadAd(); ...
Наконец, после загрузки рекламной вставки можно вызвать метод Show
, чтобы отобразить ее на экране. Например, можно создать функцию для ShowInterstitial
и вызвать ее, когда потребуется показать эту рекламную вставку:
// Show button public void ShowInterstitial() { if (this.isLoaded) { this.interstitialAd.Show(); this.isLoaded = false; } else { Debug.Log("Interstitial Ad not loaded!"); } }
Следуйте инструкциям, чтобы интегрировать в свое приложение Unity разные форматы рекламы.
Когда вы будете готовы показывать рекламу в своем приложении, отправьте его на проверку. Перед этим убедитесь в том, что приложение соответствует политикам Audience Network и нормам сообщества Facebook.