Создавайте собственные события

Выберите платформу: AndroidНовый Android iOS Unity

Пользовательские события позволяют издателям, использующим медиацию AdMob, добавлять каскадную медиацию для сторонней рекламной сети, которая не входит в число поддерживаемых рекламных сетей . В этом руководстве объясняется, как использовать существующее пользовательское событие, созданное для Android и iOS, в проекте Unity.

Предварительные требования

Прежде чем продолжить, выполните следующие действия:

  • Настройте Google Mobile Ads Unity Plugin . В вашем приложении Unity уже должен быть импортирован плагин Google Mobile Ads Unity.

  • Для Android и iOS уже созданы пользовательские адаптеры событий. Чтобы создать собственные адаптеры событий, обратитесь к нашим руководствам по созданию пользовательских событий для Android и iOS .

Определите пользовательское событие

Для того чтобы пользовательское событие участвовало в медиации, его необходимо определить в веб-интерфейсе AdMob. Добавьте пользовательское событие в группы медиации как для Android, так и для iOS.

На этом скриншоте показаны примеры пользовательских настроек событий:

Как заполнить параметры
Название класса (iOS)

Для iOS введите имя класса, реализующего пользовательское событие.

Если ваш класс реализован на Swift, вам необходимо добавить к имени класса префикс в виде имени его модуля приложения/фреймворка (например, appName.className ).

Имя целевого объекта необходимо указать, если в вашем проекте несколько целевых объектов или если имя проекта отличается от имени целевого объекта. Имя целевого объекта будет выглядеть так: appName_targetName.className . Кроме того, не забудьте заменить все небуквенно-цифровые символы, такие как дефисы, на подчеркивания.

Название класса (Android) Для Android убедитесь, что значение, указанное в поле " Class Name , является полным именем класса для Android (например, com.google.ads.mediation.sample.customevent.SampleCustomEvent ).
Этикетка Введите уникальное название для мероприятия.
Параметр Если вы хотите передать строковый аргумент в ваше пользовательское событие, например, идентификатор рекламного блока.

Импортировать пользовательские библиотеки событий

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

  • Сторонний SDK для Android
  • Пользовательское событие стороннего разработчика Android
  • SDK для сторонних рекламных кампаний iOS
  • Пользовательское событие стороннего разработчика iOS

Типы библиотек

Существует несколько способов импортировать код Android или iOS в проект Unity, в том числе:

  • Импорт предварительно собранных артефактов Android или iOS с помощью менеджера внешних зависимостей для Unity.
  • Импорт плагинов AAR и библиотек Android.
  • Импорт исходных файлов Java и Kotlin
  • Импорт исходных файлов iOS и статических библиотек

В зависимости от способа упаковки используемых вами библиотек, вам может потребоваться разная стратегия импорта для каждой библиотеки. Каждый вариант более подробно рассматривается далее.

(Рекомендуется) Импортируйте предварительно собранные артефакты Android или iOS.

Импортируйте предварительно собранные артефакты из Maven или CocoaPods, используя External Dependency Manager for Unity . Этот плагин входит в состав плагина GoogleMobileAds.

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

  • Файл должен находиться в папке /Editor/ .
  • Имя файла должно заканчиваться на Dependencies.xml .

Например, чтобы импортировать адаптеры пользовательских событий для гипотетической рекламной сети AdPub , создайте файл:

Assets/AdPub/Editor/AdPubDependencies.xml

Далее определите зависимости в файле AdPubDependencies.xml . Правила настройки импорта можно найти в разделе «Начало работы с менеджером внешних зависимостей для Unity» . Следующий фрагмент кода включает SDK для Android и iOS, а также пользовательские библиотеки событий для гипотетической рекламной сети «AdPub».

Assets/AdPub/Editor/AdPubDependencies.xml

<dependencies>
  <androidPackages>
    <androidPackage spec="com.adpub.android:adpub-sdk:1.0.0" />
    <androidPackage spec="com.adpub.android:adpub-custom-event:1.0.0">
      <repositories>
        <repository>https://repo.maven.apache.org/maven2/</repository>
        <repository>https://dl.google.com/dl/android/maven2/</repository>
      </repositories>
    </androidPackage>
  </androidPackages>
  <iosPods>
    <iosPod name="AdPubSDK" version="1.0" />
    <iosPod name="AdPubCustomEvent" version="1.0">
      <sources>
        <source>https://github.com/CocoaPods/Specs</source>
      </sources>
    </iosPod>
  </iosPods>
</dependencies>

Если ваш пользовательский артефакт события уже имеет зависимость от необходимого SDK рекламной сети, вам не нужно явно указывать зависимость от SDK: Пример

Менеджер внешних зависимостей автоматически отслеживает изменения конфигурации и разрешает зависимости. Вы также можете выполнить разрешение вручную с помощью следующей команды меню:

Assets > External Dependency Manager > Android Resolver > Force Resolve

Импорт плагинов AAR и библиотек Android.

Unity поддерживает импорт файлов *.aar , а также проектов библиотек Android. Если ваше пользовательское событие Android упаковано таким образом, см. разделы «Плагины AAR» и «Библиотеки Android» для получения инструкций по включению этих файлов в ваш проект Unity.

Импорт исходных файлов Java и Kotlin.

Начиная с Unity 2018.2 и выше, если ваш код пользовательских событий Android состоит из нескомпилированных файлов *.java или *.kt , вы можете использовать исходные файлы Java или Kotlin в качестве плагинов .

Импорт исходных файлов iOS и статических библиотек.

Unity поддерживает артефакты *.framework , исходные файлы *.h и *.m . Импорт артефактов и исходных файлов iOS описан в руководстве Unity для нативных плагинов .

Протестируйте пользовательские события с помощью инспектора рекламы.

Инспектор рекламы можно использовать для проверки корректности импорта пользовательских событий в ваше приложение. Инспектор рекламы может открываться с помощью жестов или программно с минимальным количеством кода.

(Необязательно) Вызов нативных методов сторонних SDK из скриптов C#.

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

  1. Определить общий интерфейс для клиентов платформы.
  2. Реализовать клиент по умолчанию для неподдерживаемых платформ.
  3. Реализуйте Android-клиент для вызова методов Android.
  4. Реализуйте iOS-клиент для вызова методов iOS.
  5. Реализуйте фабрику клиентов для условного переключения между клиентами iOS и Android.
  6. Определите API для доступа ко всем функциям SDK сторонних рекламных сетей.

В следующем разделе показано, как эти шаги реализованы для гипотетической рекламной сети под названием "AdPub" в API на C#, который может вызывать методы на Android и iOS:

Android

package com.adpub.android;

public class AdPubSdk
{
    public static void setHasUserConsent(boolean hasUserConsent);
}

iOS

@interface AdPubSdk : NSObject
+ (void)setHasUserConsent:(BOOL)hasUserConsent;
@end

Определить общий интерфейс для клиентов платформы.

Создайте интерфейс IAdPubClient с методом, представляющим базовый API для Android и iOS.

Assets/AdPub/Common/IAdPubClient.cs

namespace AdPub.Common
{
    public interface IAdPubClient
    {
        ///<summary>
        /// Sets a flag indicating if the app has user consent for advertisement.
        ///</summary>
        void SetHasUserConsent(bool hasUserConsent);
    }
}

Определите клиент по умолчанию для неподдерживаемых платформ.

Создайте класс DefaultClient , реализующий интерфейс IAdPubClient , который просто выводит в консоль имя метода. Используйте эту реализацию для редактора Unity и всех платформ, кроме Android и iOS.

Assets/AdPub/Common/DefaultClient.cs

namespace AdPub.Common
{
    public class DefaultClient : IAdPubClient
    {
        public void SetHasUserConsent(bool hasUserConsent)
        {
            Debug.Log("SetHasUserConsent was called.");
        }
    }
}

Разработать клиент для платформы iOS.

Создайте класс iOSAdPubClient , реализующий интерфейс IAdPubClient в iOS. Эта реализация использует InteropServices для вызова метода setHasUserConsent() в классе iOS AdPubSdk .

Assets/AdPub/Platforms/iOS/iOSAdPubClient.cs

// Wrap this class in a conditional operator to make sure it only runs on iOS.
#if UNITY_IOS

// Reference InteropServices to include the DLLImportAttribute type.
using System.Runtime.InteropServices;

using