PDA

Просмотр полной версии : Своя баннерообменная сеть.


Astraport
08.04.2012, 21:07
Смысл в том, что в мобильных приложения размещаются различные материалы (иконка + текст на фоне или целиком графический баннер с гиперссылкой) продвигающие другие приложения. На уровне AS3 / Flex - это компонент вид которого определяется данными полученными с сервера. Данные хранятся в XML или mySQL.
Может кто делал что-то подобное? Как лучше организовать процесс?
Как сделать разные уровни важности для материалов, то есть показывать более приоритетные чаще других?

toFL
09.04.2012, 11:47
Мне кажется, что это не орг. вопросы.
Может кто делал что-то подобное? Как лучше организовать процесс?

Дергаешь GET запросом сервер - получаешь xml с описанием игр, в котором:

<list>
<games>
<game>
<id>1</id>
<platform-id>2</platform-id>
<weight>15</weight>
<url>Ссылка на игру</url>
<images>
<image update="0" type="icon">33</image>
<image update="0" type="screen">34</image>
</images>
<texts>
<text type="small_caption">Моя игра</text>
<text type="big_caption">Моя игра: Покоритель ветров</text>
</texts>
</game>
<game>
И т.п.
</game>
</games>
</last-updated>0123456789</last-updated>
</list>

Где:

id - уникальный идентификатор игры
platform-id - для какой платформы реклама (iPhone, iPad, Android и др.)
weight - статистический вес (сумма всех весов всех игр = 100)
images - список всех изображений для этой игры (иконка, большое изображение и т.п.)
texts - тексты (название, пару строк, развернутое описание и т.п.)
last-updated - последняя дата обновления, что бы с сервера приходили данные о том, нужно ли поменять что либо в XML или он актуальный на стороне клиента.


Зная свою платформу, делаешь выборку по играм. Потом сортируешь в зависимости от статистического веса.
Ссылку на картинку получаешь вторым запросом, передавая её id из XML.
Так же, лучше реализовать кэширование полученных данных и закачивать обновления в отдельную папку. Так как если при обновлении списка игр выключить инет, то получится каша на клиенте. После успешной закачки всех новых ресурсов, перекидываешь их в основную папку хранения данных (File.applicationStorageDirectory).

Astraport
09.04.2012, 12:02
toFL, то есть это у вас уже есть опыт подобной системы?

Спасибо, хорошо все описано. Примерно так и строю.
Вот по статистическому весу - эти данные где хранятся?
А зачем два запроса? Можно и в первом все передать, данных то мало. Это сеть для своих игр/приложений.
По 4. п. с кэшированием под разными платформами пока туго. Поэтому просто вывожу баннер заглушку "More apps" с ссылкой на профиль разработчика на маркете.
Есть ещё большая проблема с локализацией - показывать юзеру баннеры с языком его локали и с соответствующими ссылками.

toFL
09.04.2012, 12:13
toFL, то есть это у вас уже есть опыт подобной системы?
Да, совсем недавно закончили работу над этой системой.
Вот по статистическому весу - эти данные где хранятся?
В базе данных

На самом деле мы сделали админку на AIR, которая после добовления игры синхранизируется с Java сервером, а он уже с базой. В этой админке указываешь все данные, в том числе данные по языкам...и при запросе, сервер отдает XML с нужной инфой. А запрос примерно таков:
/get-ads/{game-id}/{platform-id}/{locale}/{last-updated}
Где:

game-id - из какой игры идет запрос
platform-id - из какой платформы идет запрос
locale - на каком языке запрашиваются данные
last-updated - время, последнего обновления

А зачем два запроса? Можно и в первом все передать, данных то мало. Это сеть для своих игр/приложений.
В принципе да.
По 4. п. с кэшированием под разными платформами пока туго. Поэтому просто вывожу баннер заглушку "More apps" с ссылкой на профиль разработчика на маркете.
При компиляции игры, засовывай туда последнюю версию "More games" и при первом запуске приложения перекидывай этот "default cache" в File.applicationStorageDirectory (с которым работаешь по умолчанию)