Apple разработала механизм вводных предложений именно для этого.
Мы уже немного касались вводных предложений в нашей предыдущей статье. Если вы читали ее, то можете пропустить этот блок.
До недавнего времени (а именно до iOS 10) Apple предлагала только один тип вводных предложений – бесплатный триальный период. Сейчас этот список расширился до трех: бесплатный триальный период, оплата по факту использования (Pay as you go) и предоплата (Pay up front).
Эта модель оплаты предусматривает единовременную скидку на один или несколько платежных периодов. По окончании этих периодов с пользователя будет списана обычная стоимость подписки. Например, пользователю может быть предложено оформить подписку на сервис стоимостью $3.99 в месяц. Эта цена будет действовать 2 месяца, по окончании которых он сможет продолжить пользоваться сервисом по обычной цене $9.99 в месяц.
Цена этого предложения по факту использования обязательно должна быть ниже обычной цены подписки. Например, вы не можете предложить пользователю платить $19.99/месяц в течение первых двух месяцев, а после — $9.99 в месяц.
В таблице ниже приведены возможные значения длительности начального периода в зависимости от длительности самой подписки:
В этой модели вы предлагаете пользователю заплатить сразу за несколько месяцев (1, 2, 3, 6 или 12) вперед. По окончании этого периода пользователь будет оплачивать подписку по стандартным условиям. Например, вы можете предложить оплатить подписку за облачное хранение данных сразу на 3 месяца вперед со скидкой за $14.99. А через 3 месяца пользователь будет платить $9.99 в месяц. Есть 2 существенных отличия этой модели от Оплаты по факту использования:
И, конечно, наш старый друг – бесплатный триал. Можно заметить, что триал является частным случаем предоплаты, в котором начальная цена равна нулю.
Теперь, когда мы разобрались с тем, что такое вводные предложения, пора приступить к их созданию.
Откройте App Store Connect, перейдите в секцию “Features” и выберите нужную подписку:
В разделе “Subscription Prices” нажмите на “+” и выберите в выпадающем списке “Create Introductory Offer”:
Выберите территории (страны), на которые будет распространяться предложение:
Как мы уже упоминали ранее, вы можете иметь не более одного вводного предложения на каждую подписку и территорию в каждый момент времени.
Введите даты начала и окончания предложения:
Выберите один из трех типов вводного предложения:
В зависимости от выбранного типа введите следующие данные:
Если вы создаете предложение по типу Pay as you go или Pay up front, на следующем экране можете настроить стоимость предложения по каждой территории, на которой она действует:
Сохраните изменения. Круто! Ваше предложение создано и активно.
В Apple разработали специальный класс для работы с вводными предложениями: SKProductDiscount
. Этот класс включен в библиотеку StoreKit
, отвечающую за работу со встроенными покупками. Отныне каждый продукт (объект класса SKProduct
) содержит опциональный атрибут introductoryPrice
(он опциональный, потому что вводное предложение может и не существовать для этой подписки) типа SKProductDiscount
.
SKProductDiscount
содержит информацию о предложении:
paymentMode
– тип вводного предложения. Возможные значения: payAsYouGo
, payUpFront
, freeTrial
.price
и priceLocale
– стоимость и локаль вводного предложения.numberOfPeriods
– число периодов вводного предложения. Для Pay up front и триала это значение всегда равно 1.subscriptionPeriod
– длительность периода вводного предложения. Например, день, неделя, месяц или год.Вы можете использовать это API для правильного отображения условий предложения пользователю: в том числе его длительности и цены.
Не отображайте пользователю предложение, если он не вправе его использовать. Крайне важно предварительно проверить, может ли он им воспользоваться.
Перед тем, как показывать пользователю вводное предложение, вы должны удостовериться в том, что пользователь сможет им воспользоваться. Дело в том, что каждый пользователь может воспользоваться предложением только один раз в каждой группе подписок. Например, если в вашем приложении есть три тарифных плана: Bronze, Silver и Gold, которые находятся в одной группе продуктов, и каждый из которых предлагает бесплатный недельный триал, то пользователь сможет активировать только один из трех триалов. И воспользоваться триалом лишь единожды (в пределах одной группы подписок). Если он однажды это уже сделал, то мы не можем показать ему, как и остальным пользователям, экран с предложением попробовать приложение бесплатно в течение недели. Вместо этого мы должны сразу отправить его на экран с оформлением платной подписки.
Следить за этим – задача разработчика.
Вот тут начинается самое интересное ?. В `StoreKit` нет методов, позволяющих узнать, может ли пользователь воспользоваться вводным предложением или нет. Единственный вариант – это сохранять где-то (например, на сервере) чеки (receipts) от всех подписок этого пользователя по каждой группе покупок. И всякий раз, когда требуется проверить право пользователя на вводное предложение какой-то подписки, просматривать все транзакции каждого чека, принадлежащего нужной группе подписок, в поисках полей is_trial_period
и is_in_intro_offer_period
. Если где-то это значение равно 1
, то пользователь уже воспользовался триалом/вводным предложением в этой группе подписок.
Потно, правда? Чтобы реализовать это, вам потребуется собственный сервер, на который вы будете передавать данные обо всех покупках пользователя. А всего-то нужно просто узнать, пользовался ли этот пользователь когда-то вводным предложением или нет.
Вы можете использовать Apphud для точного анализа встроенных подписок и аналитики в реальном времени. Зарегистрируйтесь и начните пользоваться Apphud уже сейчас!
Таким образом, новые пользователи всегда могут воспользоваться триалом или вводным предложением, а среди текущих – только те, кто никогда не активировал триал или вводное предложение в этой группе подписок.
Вводные предложения – это замечательный инструмент, позволяющий привлечь новых пользователей. Вкупе со сниженной до 15% комиссии Apple для лояльных пользователей это поможет значительно увеличить заработок вашего приложения. Но к сожалению, чтобы его корректно использовать, придется изрядно повозиться с настройкой собственного сервера.