PDA

Просмотр полной версии : AdMob и Starling? Как показать рекламу?


caseyryan
19.03.2014, 19:44
Сделал игру для мобил. Все бы ок, думал и с рекламой проблем не будет, но не тут то было.
Вопрос в том, как показать рекламный блок, если игра построена на старлинге? По идее надо добавлять блок в Starling.current.nativeOverlay, но доступные библиотеки AdMob этого не позволяют.
Есть ли уже обходные пути? Или надо самому велосипед писать?

illuzor
19.03.2014, 19:52
Разве мобильная реклама хоть как-то завязана на дисплейлист?
Если так, то можно просто добавить её в дисплейлист, он всегда отображается поверх stage3d

caseyryan
19.03.2014, 19:53
Первый раз сталкиваюсь с мобильной рекламой.
У меня блок не показывается. Видимо проблема в дисплей листе

Astraport
20.03.2014, 00:03
Вот тоже не смог запустить AdMob. Послушал совета illuzor что рыбы в рекламе мало, хотя давно знал об этом, но всеобщий интерес к рекламе на форумах подталкивал встроить рекламу. В итоге сделал свою луна-парк банеро-крутилку, обвязал свои приложения и даже продал места партнерам.

illuzor
20.03.2014, 00:36
рыбы в рекламе мало
Денег то в рекламе полно. Просто, чтобы на ней хоть что-то заработать, нужно огромное количество пользователей.

caseyryan
20.03.2014, 08:48
А у кого по сколько пользователей набиралось? И какие доходы с рекламы при этом были?
Чисто ради интереса. Так как сам я с рекламой не работал еще ни разу. Всегда делал монетизацию на API соцсетей

Добавлено через 46 минут
П.с. Проблему я решил. Она была в том, что метод adMob.supportDevice всегда возвращал false. К дисплей листу это действительно не имеет отношения. Сейчас реклама показывается в аппликухе на старлинге вообще без проблем.

Решается все так (сразу говорю, что речь идет о последней, на данный момент, версии FlashDevelop 4.5.2.5 и AIR 3.9):
1) Добавляем файл admob_all_in_one6.6.7.ane (http://code.google.com/p/flash-air-admob-ane-for-ios/) в папку lib, дальше add to library (ну как бы правой кнопочкой, думаю тут все и так ясно)))
2) потом опять по этому файлу правой кнопкой и лезем в options и ставим External Library (not included).
3) находим файл bat/Packager.bat и ищем строку
call adt -package -target %TYPE%%TARGET% %OPTIONS% %SIGNING_OPTIONS% "%OUTPUT%" "%APP_XML%" %FILE_OR_DIR%
меняем ее на
call adt -package -target %TYPE%%TARGET% %OPTIONS% %SIGNING_OPTIONS% "%OUTPUT%" "%APP_XML%" %FILE_OR_DIR% -extdir lib/
Сохраняем файл, в нем больше делать нечего.

4) В файле application.xml, перед тегом </application> добавляем ID нашего расширение, в моем случае это

<extensions>
<extensionID>so.cuo.platform.admob</extensionID>
</extensions>

(ВАЖНО!!!) для тестов на десктопе, эту строку надо откомментировать и все, что связано с AdMob в коде - тоже. Так как будет вылетать ошибка VerifyError, что мол класс не найден.

Ну вот, собственно и все.
В коде делаем примерно так:

_admob = Admob.getInstance();
trace("3:SUPPORT DEVICE", _admob.supportDevice);
if (_admob.supportDevice) {
_admob.setKeys("ca-app-pub-4744525099112098/4532981367");
_admob.showBanner(Admob.BANNER, AdmobPosition.BOTTOM_CENTER);
_admob.enableTrace = true;
}



Запускаем на андроид устройстве и, о чудо! Реклама появляется по центру внизу экрана.

Если кто-то хочет подробнее, то гляньте тут описание от Филиппе (один из создателей FlashDevelop, если кто не в курсе) https://plus.google.com/u/0/+PhilippeElsass/posts/7rhFEX7S372

П.с. ну и про необходимые разрешения не забываем, там же в файле application.xml


<android>
<manifestAdditions><![CDATA[<manifest android:installLocation="auto">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch" />
<application>
<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
</application>
</manifest>]]></manifestAdditions>
</android>

illuzor
20.03.2014, 12:58
caseyryan, так проблема не в admob, а в том, что вы не умели пользоваться ane.
для тестов на десктопе, эту строку надо откомментировать и все, что связано с AdMob в коде - тоже. Так как будет вылетать ошибка VerifyError, что мол класс не найден.
Достаточно просто подключить ane, как обычную swc библиотеку.

caseyryan
20.03.2014, 13:03
Достаточно просто подключить ane, как обычную swc библиотеку.
Не совсем. Обязательно нужно убрать extentionID из xml.
Иначе будет это:

Starting AIR Debug Launcher with screen size 'NexusOne'

(hint: edit 'Run.bat' to test on device or change screen size)

The content cannot be loaded because there was a problem loading an extension: E
rror: Requested extension so.cuo.platform.admob could not be found.
Для продолжения нажмите любую клавишу . . .

Astraport
20.03.2014, 14:55
Не понял.
Обязательно нужно убрать extentionID из xml.
В файле application.xml, перед тегом </application> добавляем ID нашего расширение

caseyryan
20.03.2014, 16:38
Что не понятного-то? Для теста на мобиле он нужен, для теста на компе - нет

alatar
20.03.2014, 18:50
Что не понятного-то? Для теста на мобиле он нужен, для теста на компе - нет
Для нормально написанного расширения никаких дополнительных действий не требуется. Для этого в расширении должна быть платформа по-умолчанию (<platform name="default">...) (убедиться в ее наличии можно посмотрев файл extension.xml). В случае разработки для мобилок в поддерживаемые профили необходимо добавить extendedMobileDevice. Если вы в коде правильно реализовали работу с расширением (проверяете isSupported), то приложение будет корректно работать как на девайсе, так и в симуляторе.

caseyryan
20.03.2014, 21:17
alatar, там есть платформа по умолчанию.
Сложно сказать, корявая тут реализация расширения (делал его не я) или FlashDevelop так коряво работает с ane, но могу точно сказать, что убирать extentionID для теста на десктопе обязательно. Иначе даже не скомпилируется.

работу с расширением (проверяете isSupported)
Это само собой делаю. Но проблемы, как понятно из описанного выше, совсем не в этом.

alatar
20.03.2014, 22:05
Вот это странно. Возможно вы что-то путаете, ошибка может возникать при попытке запуска в симуляторе (возможно в FD это выглядит похоже на ошибку компиляции), если не найден подходящий профиль. Или в рантайме, если ошибка возникает в расширении.

caseyryan
20.03.2014, 22:34
Ошибка вылетает не в окно output FD, а в окне которое появляется при запуске батника.
Если расширение не откомментировать, то все остановится вот на этом:


Starting AIR Debug Launcher with screen size 'NexusOne'

(hint: edit 'Run.bat' to test on device or change screen size)

The content cannot be loaded because there was a problem loading an extension: E
rror: Requested extension so.cuo.platform.admob could not be found.
Для продолжения нажмите любую клавишу . . .