Содержание
— 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 и описание методов на страничке в вики.
VeTaLv
Интересно, спасибо, потыкаю. Пекедж на ассет стор закидывать планируете?
pyra
да планирую