Заметки из Зазеркалья

17.11.2015

Получение дохода от мобильных приложений

Планируется в версии 8.3.8.

Мобильные операционные системы позволяют разработчикам приложений получать доход от использования своих приложений. Есть два источника такого дохода: показ рекламы в вашем приложении, и продажа (активация) отдельных функциональных возможностей вашего приложения.

В мобильной платформе мы реализовали поддержку обоих этих источников дохода. По нашему мнению вы будете использовать эту функциональность, в основном, в независимых мобильных приложениях. То есть в таких приложениях, основным назначением которых является автономное использование, а не организация удаленных рабочих мест для «десктопных» прикладных решений.

С показом рекламы всё достаточно просто. Вы показываете рекламу, и получаете деньги от рекламодателей.

Но когда вы что-то продаёте пользователю, вы получаете деньги от пользователя. И значит должны предоставить ему что-то взамен. Здесь, основными, по нашему мнению, могут являться такие сценарии:

  • Покупка «премиум» версии приложения, в которой доступна дополнительная функциональность;
  • Снятие ограничений демоверсии. Например, демоверсия может иметь ограничения по количеству введённых данных. При достижении этого ограничения вы предлагаете пользователю купить рабочую версию, оперирующую любым количеством данных;
  • Покупка возможности взаимодействия с теми или иными веб-сервисами. Например, ваше приложение является агрегатором данных из разных источников. Стандартная бесплатная версия вашего приложения взаимодействует с ограниченным количеством источников. А за дополнительную плату пользователь может подключить более широкий и интересный набор источников информации.

Далее мы хотим познакомить вас с новой функциональностью более подробно.

Механизм покупок

В мобильной платформе 1С:Предприятия мы реализовали поддержку механизмов покупок, встроенных в операционные системы Android и iOS. Для Android это сервис Google Play In-App Billing. Для iOS это Apple In-App Purchase.

Мобильные операционные системы позволяют выполнять три вида покупок:

  • Постоянная покупка. Приобретается один раз;
  • Расходуемая покупка. Приобретается неограниченное количество раз. В Android приобрести покупку в следующий раз можно только после того, как она будет израсходована. В iOS расходование не требуется, после приобретения покупка сразу же готова к следующему приобретению;
  • Подписка. Приобретается один раз как постоянная покупка, но действует в течение определенного периода времени. Для подписки может быть включено автоматическое продление, при котором с привязанного счета пользователя будет сниматься плата за следующий период.

В 1С:Предприятии

Список покупок, которые могут выполнять пользователи мобильного приложения, вы должны заранее сформировать в своей учётной записи разработчика Google или Apple. Идентификаторы этих покупок поместить в своё мобильное приложение. Например, в виде строковых констант.

После этого типичная последовательность выполнения покупки выглядит следующим образом. Сначала вам нужно получить менеджер встроенных покупок. Он обеспечивает основную работу с покупками. Он доступен из свойства глобального контекста ВстроенныеПокупки:

ВП = ВстроенныеПокупки;

Затем вам нужно понять, можно ли вообще выполнять покупки. Для этого вы можете использовать два метода:

ВП.ПокупкиПоддерживаются();
ВП.РасходованиеПокупокПоддерживается();

Почему нужны эти проверки? Например, если устройство использует операционную систему Android, то для выполнения покупок на нём обязательно должны быть установлены актуальные службы Google Play. А на устройствах с операционной системой iOS расходование покупок не используется.

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

ВП.ОбновитьИнформациюОПриобретении();

Этот метод требует обращения к Интернету, и его выполнение может занять заметный промежуток времени. По переданным идентификаторам он запросит в сервисе-магазине информацию о покупках, в том числе об их приобретении. Сохранит (или обновит) эту информацию на устройстве в локально хранимой истории покупок. Для того чтобы в дальнейшем вы не обращались к Интернету, а пользовались локальными данными.

Теперь вы можете что-нибудь купить, или израсходовать покупку. И в том, и в другом случае вам понадобится знать актуальную информацию про конкретную покупку. Её можно узнать из списка доступных и приобретённых покупок. Для получения этого списка служит метод:

ВП.ПолучитьСписок();

Каждая покупка описывается объектом ВстроеннаяПокупка. Он содержит идентификатор, заголовок, описание, цену и валюту покупки.

Чтобы купить или израсходовать покупку, вы выполняете один из двух методов:

ВП.НачатьПриобретение();
ВП.ИзрасходоватьПокупку();

Метод НачатьПриобретение() отправляет запрос на оплату покупки. Управление передается интерфейсу проведения платежей, предоставляемому операционной системой. Например, для операционной системы Android это будет выглядеть следующим образом:

Запрос пароля:

После окончания покупки, удачного или неудачного, будет выполнен возврат в мобильное приложение.

Настройка мобильного приложения

Пользователь приобретает покупки не ради покупок, а ради того, чтобы пользоваться функциональностью и дополнительными возможностями, которых раньше у него не было. Поэтому на основе его покупок вам надо настроить мобильное приложение. Для этого функциональность, включаемая покупками, может настраиваться в вашем приложении с помощью функциональных опций.

Чтобы правильно установить значения функциональных опций, вам нужно проверить, приобретены ли те покупки, которые влияют на функциональность.

Для этого сначала полезно обновить информацию о покупках методом ОбновитьИнформациюОПриобретении(). Потому что какие-то покупки пользователь мог приобрести на другом устройстве с этим же аккаунтом. После этого нужные покупки вы можете проверить методом Приобретена().

Другой способ - это использовать метод ПолучитьСписок() со вторым параметром Истина. Чтобы он вернул только те покупки, которые ещё не приобретены.

Удобнее всего выполнять это при запуске вашего мобильного приложения.

Проверка достоверности покупок

Сервисы покупок подтверждают факт приобретения покупки тем, что возвращают в мобильное приложение квитанцию, подписанную цифровой подписью. При выполнении метода НачатьПриобретение() эта квитанция проверяется.

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

Для этого предназначен объект МенеджерПроверкиВстроенныхПокупок, который доступен только в серверном контексте «настольной» платформы 1С:Предприятие. Вы можете передать ему квитанцию, полученную в результате покупки. И он её проверит самостоятельно. Или же он предоставит вам распакованные поля квитанции, для того, чтобы вы сами проверили их.

Тестирование встроенных покупок на платформе разработчика

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

В случае с операционной системой Android такая возможность отсутствует. Используя мобильную платформу разработчика невозможно протестировать работу встроенных покупок в Google Play In-App Billing.

Для того чтобы решить эту проблему, мы сделали специальный веб-сервис - эмулятор встроенных покупок.

Этот веб-сервис мы включим в состав Сборщика мобильных приложений. Тогда процесс тестирования для вас будет выглядеть следующим образом:

  • Вы устанавливаете сборщик мобильных приложений и публикуете эмулятор встроенных покупок на веб-сервере;
  • Создаёте в сборщике те покупки, которые хотите протестировать;
  • В мобильном приложении указываете адрес опубликованного эмулятора встроенных покупок;
  • После этого мобильная платформа разработчика при вызове методов объекта МенеджерВстроенныхПокупок будет подменять их обращениями к эмулятору;
  • Эмулятор, в ответ, воспроизводит для вас функциональность Google Play In-App Billing.

Реклама

Второй механизм, который мы реализовали в мобильной платформе, поддерживает работу с агрегатором AdMob компании Google, и сервисом iAd компании Apple.

Рекламу, предоставляемую этими сервисами, вы можете показать в мобильном приложении на полный экран, или в виде небольшого баннера сверху или снизу формы.

В 1С:Предприятии

При использовании AdMob идентификаторы рекламных блоков вам нужно будет взять из учётной записи разработчика. А в случае использования iAd сервис самостоятельно загрузит рекламу.

Типичная последовательность отображения рекламы выглядит следующим образом. Сначала вам нужно получить менеджер отображения рекламы. Он обеспечивает всю работу с рекламой. Он доступен из свойства глобального контекста ОтображениеРекламы:

ОР = ОтображениеРекламы;

Стандартно отображение рекламы отключено. Поэтому его нужно включить:

ОР.УстановитьИспользование();

Для показа полноэкранной рекламы необходимо сначала задать идентификатор рекламного блока, а затем специальным методом показать её:

ОР.УстановитьИндентификаторПолноэкраннойРекламы();
ОР.ПоказатьПолноэкраннуюРекламу();

Для показа рекламного баннера не нужен специальный метод. Рекламный баннер будет показан сразу, как выполнятся три условия:

  • Отображение рекламы используется: ОР.УстановитьИспользование();
  • Установлен идентификатор рекламного блока: ОР.УстановитьИндентификаторРекламногоБаннера();
  • Выбран вариант отображения баннера сверху или снизу: ОР.УстановитьОтображениеРекламногоБаннера();

Управление рекламой

При использовании агрегатора AdMob вы можете блокировать рекламные объявления для всего аккаунта, или только для отдельных приложений.

Функция AdMob Разрешить/блокировать позволяет управлять тем, какие объявления появляются в вашем приложении. В AdMob доступно несколько способов просмотра и блокирования объявлений.

  • На вкладке URL-адреса рекламодателя можно блокировать объявления с URL определенного рекламодателя, например, если вы не хотите, чтобы в вашем приложении отображались объявления конкурента;
  • На вкладке Общие категории можно блокировать объявления из общих категорий, таких как «Одежда», «Интернет», «Недвижимость» и «Транспортные средства»;
  • На вкладке Деликатные категории можно блокировать объявления из таких категорий, как «Религия», «Политика», «Секс и сексуальные отношения» и т. д. Блокирование по деликатным категориям доступно для объявлений лишь на некоторых языках, независимо от языка приложения;
  • На вкладке Объявления для рекламы приложений (это объявления с функцией загрузки) можно блокировать материалы по их идентификаторам;
  • На вкладке Рекламные сети можно заблокировать объявления из определенных источников;
  • На вкладке Центр просмотра объявлений можно проверять рекламные материалы, которые будут отображаться в приложениях или уже показываются, и при необходимости блокировать их.

Теги: мобильная платформа  8.3.8