AdMob, Qt 5.2 и Android или что бывает когда в интернете нет ответа
Здравствуйте, коллеги.Qt 5 достаточно нов для того чтобы там не оказалось чего-то очень нужного. Вот так же выяснилось что там нет плагина для AdMob и других сервисов монетизации.После того как вы разработали или портировали свое приложение на Qt под android, часто может встать вопрос монетизации. Кратко упомянуто о решении это проблемы в моем предыдущем посте. Здесь описано более подробно как встроить AdMob в Qt приложение под Android.
Поиск готового решения V-play AdMob plugin V-play платный фреймворк с плагином для встраивания разных сервисов в Qt приложения, в том числе и рекламные. Для кого-то это будет вполне приемлимое решение вопроса монетизации.qadmob Много ссылок в сети ведут именно на этот плагин, но он уже устарел.Что помогло решить проблему Помогли: документация для разработчика под Android, исходный код Qt и Necessities, а также немногочисленные стать, «отца» Qt под Android, Богдана Ватры.Инструкция Google Play Service Вначале надо добавить Google Play Service (на данный момент именно там находится a AdMob java api) для совместной сборки с вашим проектом на Qt.Шаг 1 Добавляем файл project.properties в папку где хранятся android файлы Qt проекта. В нем прописываем ссылку на библиотеку Google Play Service: android.library.reference.1=./relative/path/to/google-play-services_libВажно указать именно относительный путь к директории библиотеки, с абсолютным путем будут ошибки при сборке. И естественно этот путь должен быть относительно build директори проекта, а не директории с исходным кодом.Шаг 2 Это шаг может не понадобится, но если появляются ошибки при сборке попробуйте его.В директории библиотеки (/path_to_android_sdk/extras/google/google_play_services/libproject/google-play-services_lib/) нужно запустить следующие команды: android update lib-project --path . ant clean ant release Шаг 3 Далее редактируем AndroidManifest.xmlдобавляем права для загрузки рекламы:
View view = getWindow ().getDecorView ().getRootView (); В Qt проекте это будет QtLayout, который наследуется от ViewGroup, что нам и позволяет включить в него AdView.Далее надо добавить в ViewGroup AdView в тот момент когда реклама будет загружена. Если это сделать в функции onCreate то рекламный блог не отобразится пока не сменится ориентация экрана, либо пока приложение не будет свернуто и развернуто. Похоже это проблема в Qt java классах QtLayout.java и/или QtSurface.java.
mAdView.setAdListener (new AdListener () { public void onAdLoaded (){ if (adAdded) return; adAdded = true; viewGroup.addView (mAdView); } }); Вот что получилось в итоге: github.com/AlexMarlo/AdMob-Qt5.2-Example
Полезные ссылки: qt-project.org/doc/qt-5/qtandroidextras-notification-example.htmlgitorious.org/qadmobblog.qt.digia.com/blog/2013/12/12/implementing-in-app-purchase-on-android/developer.android.com/tools/projects/index.htmldeveloper.android.com/tools/projects/projects-cmdline.html
PS: Следующим шагом должно быть создание полноценного кросплатформенного плагина для интеграции AdMob и других сервисов монетизации в Qt. Не уверен что смогу что-то такое сделать, но надеюсь что данная статья поможет кому-то справиться с этой задачей.