Добавление рекламных вставок в приложение Unity

Audience Network позволяет монетизировать приложения для Android и iOS за счет рекламы Facebook. Рекламные вставки отображаются в полноэкранном режиме и могут использоваться как точки переходов в потоке приложения, например между действиями или во время паузы между уровнями в игре. Контентом могут быть изображения, видео и кольцевые галереи. В этом руководстве описано, как добавить рекламную вставку в ваше приложение.

Прежде чем продолжить, обязательно ознакомьтесь с руководствами по началу работы с Audience Network и Unity.

Добавление рекламной вставки

Шаг 1. Создание объекта рекламной вставки

Шаг 2. Добавление событий обратного вызова

Шаг 3. Загрузка объявления

Шаг 4. Показ объявления

Шаг 1. Создание объекта рекламной вставки

Первый шаг для показа рекламной вставки — создание объекта 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 для данного блока рекламной вставки.

Шаг 2. Добавление событий обратного вызова

После этого можно добавить несколько обратных вызовов, чтобы подписаться на события жизненного цикла рекламы. Для отслеживания этих событий нужно зарегистрировать делегат для события, как показано в следующем примере:

...
// 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();
    }
});
...

Обратный вызов для уничтоженного действия рекламы в Unity для Android

Эта информация относится только к 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 

Шаг 3. Загрузка объявления

После создания экземпляра InterstitialAd следующим этапом является загрузка рекламного объявления. Для этого используется метод loadAd() класса InterstitialAd.

Вот как загрузить объявление в показанном выше примере:

...
this.interstitialAd.LoadAd();
...

Шаг 4. Показ объявления

Наконец, после загрузки рекламной вставки можно вызвать метод 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.