Содержание


OpenAdAdapter — простое управление мобильной рекламой
Зачатки документации OpenAdAdapter
OpenAdAdapter плагин для Unity3D
— Видео: примеры использования OpenAdAdapter

В прошлой статье я рассказал о своей разработке OpenAdAdapter. Это библиотека под свободной лицензией Apache 2.0, предназначенная для управления рекламными сетями в мобильных приложениях на iOS и Android. Ёё цель повысить монетизацию приложения и обезопаситься от возможного бана с помощью перенаправления трафика на другие сети.

Следующий мой шаг — это создание плагина для Unity3D. Я расскажу как создаётся плагин и как использовать плагин OpenAdAdapter в Unity3D.

Создание плагина


Я описываю как создать плагин по двум причинам:

1. Библиотека с исходными кодами все равно может оставаться чёрным ящиком, если нет желания тратить часы и дни на ёё изучение.
2. Аналогично можно создавать другие плагины.

Если не интересно как устроен плагин, то переходите прямиком к разделу «Добавление OpenAdAdapter в проект Unity3D».

Плагин OpenAdAdapter для Unity3D состоит из 3 частей:

— С# класс, через который программа на Unity3D взаимодействует с адаптером. Он находится в файле Assets/OpenAdAdapter/OpenAdAdapter.cs. Также этот класс выполняет специфичные функции для Unity3D, такие как изменения размеров видимой области экрана (viewport) и размер элементов интерфейса, чтобы баннер не перекрыл элементы интерфейса. Я не нашёл способ сделать его достаточно универсальным для всех случаев и допускаю, что разработчику прийдётся адаптировать этот класс, так как он работает с одной камерой и одним канвасом в Render Mode: Screen Space — Camera.

— Objective C код это iOS прослойка для взаимодействия с OpenAdAdapter на iOS.

— Android Library проект, куда засунут OpenAdAdapter и Google Play Services.

Создание плагина под iOS

1. Просто скопируйте все исходники (.h, .m), либы (.a) и фреймворки (.framework) в папку Assets/Plugins/iOS. Когда Unity3D будет билдить проект под iOS, то будет создан Xcode проект, куда будут скопированы все эти файлы.

2. Откройте Xcode проект, созданный в Unity3D, в этот проект нужно внести изменения, аналогичные тому, что я описал в первой статье, а именно:

добавить фреймворки:

AdSupport.framework 
StoreKit.framework 
MessageUI.framework 
libxml2.2.dylib 
libz.dylib 
libsqlite3.0.dylib 
CoreTelephony.framework 
EventKit.framework 
EventKitUI.framework 
Security.framework 
Social.framework 
WebKit.framework


Добавить -ObjC, в Other Linker Flags

Чтобы не вносить эти изменения каждый раз, когда вы билдите под iOS, то в Unity3D можно выбрать Append вместо Replace. (Но в момент создания плагина Unity3D 5.1 не справлялся выполнить Append и пришлось вернуться на Unity3D 5.0)

Создание плагина под Android

Андроид плагин для Unity3D — это eclipse проект Android Library, размещённый в Assets/Plugins/Android.

Для работы рекламных модулей на платформе Android/GooglePlay нужно добавить в проект Google Play Services. Я это сделал простым копированием содержимого lib, res папок из оригинального проекта Google Play Services в проект моей библиотеки. Также скопировал в lib jar файлы OpenAdAdapter и рекламных сетей.

AndroidManifest.xml из eclipse проекта будет объединён с основным AndroidManifest.xml, таким образом в него попадут activity, permissions, meta теги.

Экспорт плагина



Последний шаг — это экспортировать все в пекедж. (Assets — Export Package) Я сохранил его под названием OpenAdAdapterWithGPS.unitypackage

Добавление OpenAdAdapter в проект Unity3D



Первым делом добавляете unity пекедж OpenAdAdapterWithGPS.unitypackage в ваш проект.



После добавления у вас появится Assets/OpenAdAdapter/OpenAdAdapter.cs, Assets/OpenAdAdapter/OpenAdAdapterExample.unity и плагины в соответствующих папках Assets/Plugins/iOS и Assets/Plugins/Android.



Самым простым и быстрым способом все запустить это использовать сцену Assets/OpenAdAdapter/OpenAdAdapterExample.unity и все должно работать на андроиде, а на iOS при первом открытии Xcode нужно добавить фреймворки:

AdSupport.framework 
StoreKit.framework 
MessageUI.framework 
libxml2.2.dylib 
libz.dylib 
libsqlite3.0.dylib 
CoreTelephony.framework 
EventKit.framework 
EventKitUI.framework 
Security.framework 
Social.framework 
WebKit.framework

и добавить -ObjC, в Other Linker Flags как это было описано в разделе «Создание плагина под iOS».

Дальше я опишу то, что нужно сделать, если вы будете использовать свою сцену, а не Assets/OpenAdAdapter/OpenAdAdapterExample.unity.

Создайте Empty Object и назовите его OpenAdAdapter, перетащите на него контроллер Assets/OpenAdAdapter/OpenAdAdapter.cs.

У объекта OpenAdAdapter появится свойство Canvas. Перетащите Canvas пользовательского интерфейса на свойство Canvas объекта OpenAdAdapter.



В Canvas надо выбрать «Screen Space — Camera» Render Mode. И перетащить Main Camera в свойтво Render Camera.

Если ваша игра имеет более сложную структуру, больше канвасов или камер, то вам нужно переписать контролер Assets/OpenAdAdapter/OpenAdAdapter.cs под свои нужды.

Контролер Assets/OpenAdAdapter/OpenAdAdapter.cs имеет вспомогательные не статические методы с префиксом Cmd* (например CmdShowTopBanner), они добавлены для того, чтобы их можно было прицепить как обработчики событий на кнопки в примере Assets/OpenAdAdapter/OpenAdAdapterExample.unity.

JSON файлы с ID рекламных сетей прописаны в Assets/OpenAdAdapter/OpenAdAdapter.cs и вы должны изменить их на свои.

Примеры


Инициализация (вызывается этот код при запуске из метода Update контролера OpenAdAdapter.cs)

		#if UNITY_IPHONE
		OpenAdAdapter.Init ("https://raw.githubusercontent.com/sample-data/oad1/master/ios-redir.json");
		#endif
		#if UNITY_ANDROID
		OpenAdAdapter.Init ("https://raw.githubusercontent.com/sample-data/oad1/master/android-redirect.json");
		#endif


Показать баннер

		OpenAdAdapter.ShowTopBanner ();


Спрятать баннер

		OpenAdAdapter.HideBanner ();


Показать видео рекламу

		OpenAdAdapter.Video ();


Больше примеров использования можно найти в контролере OpenAdAdapter.cs и описание методов на страничке в вики.

Комментарии (2)


  1. VeTaLv
    09.08.2015 10:39

    Интересно, спасибо, потыкаю. Пекедж на ассет стор закидывать планируете?


    1. pyra
      09.08.2015 11:43

      да планирую