Сегодня у нас еще одна статья о том, как можно заработать на своем мобильном приложении. За статью спасибо Ромео Ордосу.

Кто еще не в курсе smaato это компания, специализирующаяся на мобильной рекламе, объединяющая в одну сеть различных поставщиков рекламы, таких как Admod и Quattrowireless. Прицип работы прост: вы создаете свое приложение, внедряете в него рекламу, и зарабатываете на этом деньги. Для разработчиков СНГ это довольно хорошая альтернатива, так как размещать платные приложения на Android Market пока еще нельзя.

В январе 2010 года smaato выпустили SDK для работы с ОС Android. Мне хотелось бы поделиться небольшим опытом работы с smaato. Возможно, кому-то это будет полезно.
Регистрируемся на сайте smaato и добавляем свое приложение. Жмем по ссылке “Install Tools” справа от приложения и качаем SOMA SDK for Android. Записываем свои PublisherID (Идентификатор разработчика) и AdspaceID (Идентификатор приложения).

SDK внедряется в приложение очень легко. Всё подробно описано в SDK, поэтому сам процесс описывать не стану. Хочу сразу предупредить о проблеме с которой столкнулся сам: если не активировать приложение на сайте(кнопка status), то реклама появляться не будет, и в логах DDMS появится ошибка об отсутствии параметра devip(IP адрес запрашивающего устройства). Чтобы избежать этого, нужно активировать режим отладки (Описано в документации).

Буквально через пару часов после размещения приложения на маркете, вы уже сможете видеть свою статистику.

Отчет за Январь 2010 для моего приложения Music Junk:

Количество скачиваний: 49324
Количество активных установок: 33277

Вывод денег происходит в страны СНГ происходит через SWIFT – переводы. Для этого необходимо открыть в банке счет именно для этих переводов. Оплата производится по истечении 60 дней по окончанию календарного месяца.

Я воспользовался услугами ПриватБанка, так как давно являюсь их клиентом и у них удобная система интернет-банкинга. Карта открывается в USD и моментально, цена: 30 грн(~120 руб). С её помощью можно в любом банкомате проверить баланс, но обналичивать деньги можно только в отделениях банка. Также, воспользовавшись услугой Приват24 можно легко прослеживать поступления на счет через интернет и даже по SMS. Вместе с картой нужно попросить сделать распечатку реквизитов банка для SWIFT – переводов. (прим. Есть возможность открыть VISA для этих же переводов. Но это долго и дороже, поэтому у меня на этот счет информации нет). Как мне объяснили, денежные переводы не облагаются никаким налогом, но взимается комиссия в размере 1% от суммы перевода.

Также стоит помнить, что Smaato забирает процент от прибыли(Revenue) себе по такой таблице:
1 – 5.000.000 показов: 30% от общей прибыли
5.000.001 – 20.000.000 показов: 25% от общей прибыли
> 20.000.000: 20% от общей прибыли

На дворе март… Я захожу на свой аккаунт smaato и вижу следующее:

Ура! Перехожу по ссылке и попадаю на экран ввода информации о счете:

Немного об этих полях:

Bank Account Information:
Payment Preference – выбираем International Wire Transfer. Единственный приемлемый метод для нас;
Bank Name – Имя банка(напр. PRIVATBANK);
Bank Account – номер счета. Он находится в договоре, а не на поверхности выданной карты(!!!);
Country – Страна, где находится банк(напр. Ukraine);
City – Город главного отделения банка(напр. DNEPROPETROVSK);
Prov/Region – Регион, где находится главное отделение банка(напр. DNEPROPETROVSKAYA OBL.);
SWIFT Code – SWIFT код банка(напр. PBANUA2X);

Beneficiary Address:
Address 1 – Адрес проживания(Улица, дом, квартира);
Country – страна проживания;
City – город проживания;
Prov/Region – область или АР;
ZIP/Postal Code – местный индекс;

Tax Identification:
Выбираем “Other Tax ID” и вписываем свой ИНН.

По истечении месяца вы получаете выписку по счету:

Credit Note Total – это те деньги, которые вам и должны будут перевести.

15 апреля я получил уведомление о переводе. Как мне объяснил представитель Smaato перевод может занимать и меньшее время, но в марте у них были технические проблемы и поэтому этот процесс занял большее время. За Январь 2010 я получил 750$. Формула по которой рассчитана прибыль: Net Revenue – 30% – 20$.

В итоге, я считаю Smaato неплохим источником прибыли для разработчиков бесплатного мобильного софта, и особенно для тех, у кого нет возможности размещать платные приложения.

Профит и левелап получены.

Оригинал статьи и интересное обсуждение.

Previous ArticleNext Article
Технический директор IT-Dimension, компании-разработчика кросс-платформенного программного обеспечения

This post has 1 Comment

1
  1. Если не секрет, что за приложение?

Leave a Reply

Your email address will not be published. Required fields are marked *

Р.

Работа с SOAP Web-сервисами в Android-приложениях

Всем время от времени хочется странного. Вот мне тоже захотелось такого. А именно – подружить Android-приложение с .NET Web-сервисом – такие сервисы и писать быстрее и доступ к ним потом можно получить из Windows Mobile и Windows Phone 7 без проблем – тоесть одним махом можно решить проблему работы с сервисом для различных мобильных платформ. И вот в этот раз я расскажу о том, как сделать чтобы все это заработало.

Подготовительный этап – Создание Web-сервиса

Для начала создадим простой .NET Web-сервис:
ISampleService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace SampleService
{
    [ServiceContract]
    public interface ISampleService
    {
        [OperationContract]
        double Add(double a, double b, String c);
    }
}

SampleService.asmx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebService
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class SampleService : System.Web.Services.WebService
    {
        [WebMethod]
        public double Add(double a, double b, String c)
        {
            return a + b;
        }
    }
}

Затем установим его на Web-сервер (для примера я создал виртуальный каталог на локальном IIS сервисе и установил туда сервис прямо из Visual Studio. После этого URL сервиса у меня получился вот такой:

http://192.168.1.32/SampleService/SampleService.asmx

kSOAP2 – Библиотека для доступа к SOAP-сервисам под Android

Процесс создания Android-приложения описывать не буду. Скажу только ,что после создания приложения необходимо в него добавить библиоеку kSOAP2-Android, которую можно скачать здесь.

После того, как скачали дистрибутив, JAR файл библиотеки нужнно положить в подкаталог lib в каталоге с исходными кодами проекта, а затем в окне свойств проекта в разделе Java Build Path на вкладке Libraries с помощью кнопки Add JARs… добавить его в список используемых библиотек.

Библиотеку добавили, теперь можно начинать кодинг.

Кодинг

kSOAP2 для работы с сервисом необходимы 4 параметра:

  • URL сервиса
  • Имя пространства имен
  • Имя SOAP-операции
  • Имя метода

URL Web-сервиса мы знаем – это адрес ASMX файла

Имя пространства имен можно узнать если открыть в браузере URL Web-сервиса:

Дальше нам надо узнать имя SOAP-операции, а также имя метода. Их можно узнать из WSDL схемы:

Итак, с параметрами подключения разобрались. Поулчаем что-то вроде этого:

private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://192.168.1.32/SampleService/SampleService.asmx";
private static final String SOAP_ACTION = "http://tempuri.org/Add";
private static final String METHOD_NAME = "Add";

Теперь надо как-то наш метод вызывать из приложения и передавать туда параметры.
Добавим на activity два текстовых поля, кнопку и поле для вывода результата:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:focusable="true" android:focusableInTouchMode="true">

<EditText android:layout_height="wrap_content"
			android:layout_width="fill_parent"
			android:layout_margin="5dip"
			android:id="@+id/Num1EditText"
			android:inputType="number"
			android:text="2"></EditText>
<EditText android:layout_height="wrap_content"
			android:layout_width="fill_parent"
			android:layout_marginBottom="5dip"
			android:layout_marginLeft="5dip"
			android:layout_marginRight="5dip"
			android:id="@+id/Num2EditText"
			android:inputType="number"
			android:text="3"></EditText>
<Button android:text="="
			android:layout_height="wrap_content"
			android:layout_width="fill_parent"
			android:layout_marginLeft="5dip"
			android:layout_marginRight="5dip"
			android:id="@+id/CallServiceButton"></Button>
<TextView android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:textSize="24dip"
			android:textStyle="bold"
			android:layout_marginLeft="7dip"
			android:layout_marginRight="7dip"
			android:gravity="fill_vertical|fill_horizontal"
			android:id="@+id/ResultTextView"></TextView>
</LinearLayout>

Ну вот, теперь пишем обработчик для кнопки, в котором вызываем Web-сервис.

	OnClickListener mCallServiceButtonListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			try
			{
				double a = Double.parseDouble(mNum1EditText.getText().toString());
				double b = Double.parseDouble(mNum2EditText.getText().toString());
				double result = callService(a, b);
				mResultTextView.setText(String.valueOf(result));
			}
			catch(Exception e) {
				e.printStackTrace();
				mResultTextView.setText(SOAPTest.this.getString(R.string.message_error));
			}
		}
	};

	double callService(double a, double b) throws Exception {
		double result = 0;
		do
		{
			SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

			PropertyInfo pa = new PropertyInfo();
			pa.setName("a");
			pa.setValue(new Double(a).toString());

			PropertyInfo pb = new PropertyInfo();
			pb.setName("b");
			pb.setValue(new Double(b).toString());

			PropertyInfo pc = new PropertyInfo();
			pc.setName("c");
			pc.setValue("test");

			request.addProperty(pa);
			request.addProperty(pb);
			request.addProperty(pc);

			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
			envelope.dotNet = true;

			envelope.setOutputSoapObject(request);
			HttpTransportSE androidHttpTransport = new AndroidHttpTransport(URL);
			androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

			androidHttpTransport.call(SOAP_ACTION, envelope);
			SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
			result = Double.parseDouble(resultsRequestSOAP.getProperty("AddResult").toString());
		}
		while(false);
		return result;
	}

Не забываем обратить внимание на магический флаг envelope.dotNet – без него к .NET сервису подключиться не получится.
Также есть проблемы с подключением к WCF-сервисам. У меня так и не получилось вызвать метод из WCF-сервиса (судя по тикетам проекта ksoap2-android, у многих та же проблема, но говорят что все-таки как-то можно…)

Еще есть проблема с численными параметрами. У меня упорно не хотело сериализировать параметры типа double, пришлось передавать их в виде строки (судя по примерам, все так делаю, видимо так и надо).

Скачать исходный код примера.

Б.

Больше половины разработчиков для Android недовольны своими доходами

Разработчиков мобильных приложений для платформы Google Android не устраивает работа онлайнового магазина приложений Android Market, говорится в исследовании аналитиков Skyhook Wireless, которые в октябре опросили 30 разрабочиков приложений под Android.

  • 57% не устраивает получаемый доход.
  • 90% сообщили, что число загрузок их приложений не превышает 10000.
  • 43% считают, что «Google Checkout» тормозит продажи приложений и требуют упрощения системы платежей.
  • 82% не устраивает дизайн Android Market, так как он усложняет поиск старых и заметность новых приложений.
  • 46% уверены, что разнообразие версий Android на выпускаемых устройствах существенно усложнит разработку, по причине проблем совместимости.

Ну и самое печальное для Android Market: 68% разработчиков сомневаются в целесообразности развития и поддержке своих Android-приложений.
pdf-версия исследования

За новость спасибо хабрапользователю Devd. ©