Русский
Русский
English
Статистика
Реклама

Adapty

IOS in-app purchases Конфигурация и добавление в проект

22.06.2020 16:10:43 | Автор: admin

Всем привет, меня зовут Виталий, я основатель Adapty. Подписки один из способов монетизировать приложение. С их помощью вы можете дать пользователю возможность получить постоянный доступ к обновляемому контенту в приложении или же к предоставляемому сервису. В отличие от обычных покупок, где Apple берет себе 30% комиссию, на подписках эта комиссия сокращена до 15% в случае, если пользователь подписан в течение 1 года и более.Важныймомент: если пользователь отменит подписку, то данный счетчик сбросится через 60 дней.


В этой части мы научимся:


  • Создавать покупки в App Store Connect
  • Конфигурировать подписки указывать длительность, стоимость, пробные периоды
  • Получать список покупок в приложении

когда подключаешь покупки в приложении


Создание покупок


Перед тем, как начать внедрять покупки внутри приложения необходимо:


  • Оплатить Apple Developer аккаунт как физическое лицо или организация.
  • Приняты все соглашения в App Store Connect. Обновленные соглашения будут появляться сверху в личном кабинете App Store Connect, их легко заметить.

Предположим, что в нашем приложении будет два вида подписок: месячная и годовая. У каждой из них мы сделаем пробный период длиной в 7 дней.


На странице нашего приложения в App Store Connect открываем вкладку In-App Purchases Manage. На этой вкладке отображается список созданных нами покупок. Для того, чтобы создать новую покупку, необходимо нажать на кнопку(+),которая находится около заголовка In-App Purchases.



Интерфейс создания покупок


Далее мы попадаем в диалог создания покупки. Наш выбор Auto-Renewable Subscription.



Выбираем 3 пункт


Следующим шагом нам будет предложено создать группу подписок(SubscriptionGroup). Группа подписок это множество подписок с главным свойством, что пользователь не может активировать две подписки одновременно из одной группы. Дополнительно, все introductory offers такие как триал применяются ко всей группе сразу. Группы нужны для того, чтобы отделять бизнес логику внутри приложения.


Назовем нашу группу Premium Access. При добавление следующей подписки интерфейс предложит добавить ее в уже существующую группу. Позже вы можете управлять группами в меню In-App Purchases Subscription Groups



Создание Группы подписок


Далее конфигурируем название подписки


  • Reference Name то, как будет отображаться подписка в App Store Connect, а также в разделе Sales и в отчетах
  • Product ID уникальныйидентификатор продукта, который используется в коде приложения

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



Добавим второй продукт точно так же, в итоге наш интерфейс вкладки In-App Purchases Manage будет выглядеть следующим образом:



Две подписки в приложении


Конфигурация подписок


Покупки добавили, но пока они не готовы к использованию: Status выше имеет значение Missing Metadata. Это означает, что мы пока не добавили информацию по цене и периоду подписки. Сейчас мы это исправим.


Длительность и цены


Кликаем на продукт и конфигурируем его.



Здесь нам необходимо выбрать период(SubscriptionDuration). В нашем случае, выбираем 1 Month или 1 Year. После чего переходим в меню конфигурации цен. Можно гибко настраивать цены в зависимости от стран, но мы ограничимся автоматическими ценами, выбрав только цену в USD. App Store Connect автоматически переведет цены в другую валюту, не всегда ясно, как это происходит. Скорее всего для ваших целевых рынков вы захотите поменять цену руками.



Бесплатный пробный период (free trial)


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


Чтобы зайти в нужное нам меню, нажмите на кнопку(+)рядом с заголовком и выберите пунктCreate Introductory Offerиз выпадающего списка:



Выбираем список стран



Выбираем длительность оффера. Можно поставить No End Date, если не хотите себя ограничивать.



Последний этап выбор типа оффера. Как видно на следующем скриншоте, существует три типа:


  • Pay as you go использование со скидкой: пользователь платит сниженную цену в течение нескольких начальных периодов, а после становится обычным подписчиком со стандартными ценами.
  • Pay up front предоплата за использование приложения: пользователь сразу платит некоторую стоимость и получает возможность использовать приложение в течение определенного времени, а затем, также становится обычным подписчиком.
  • Free бесплатный пробный период, по истечение которого пользователь может стать подписчиком.

Нас интересует третий вариант, а продолжительность(Duration)устанавливаем на 1 неделю.



Сохраняем настройки.


Получение списка SKProduct


Проверим, что мобильное приложение видит покупки и заложим фундамент для дальнейшей реализации проведения покупок.


Хорошим правилом является создание класса-синглтона для работы со StoreKit. Такой класс имеет только один инстанс во всем приложении. МножествоproductIdentifiersбудет хранить в себе идентификаторы наших покупок:


import StoreKitclass Purchases: NSObject {    static let `default` = Purchases()    private let productIdentifiers = Set<String>(        arrayLiteral: "barcode_month_subscription", "barcode_year_subscription"    )    private var productRequest: SKProductsRequest?    func initialize() {        requestProducts()    }    private func requestProducts() {        // Will implement later    }}

Только идентификаторов недостаточно, чтобы полноценно пользоваться покупками необходимо получить: стоимость, валюту, локализацию, скидки. Возвращает всю эту и дальше большую информацию класс SKProduct. Чтобы получить эту информацию, нам необходимо сделать запрос к Apple. Создадим объектSKProductsRequest, назначим емуdelegate вметодыdelegateбудет приходить результат запроса. Вызываем методstart(), который инициализирует асинхронную процедуру:


private func requestProducts() {        productRequest?.cancel()        let productRequest = SKProductsRequest(productIdentifiers: productIdentifiers)        productRequest.delegate = self        productRequest.start()        self.productRequest = productRequest}

Если операция пройдет успешно, будет вызван методproductsRequest(didReceive response:), в котором и будет содержаться вся необходимая нам информация:


extension Purchases: SKProductsRequestDelegate {    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {        guard !response.products.isEmpty else {            print("Found 0 products")            return        }        for product in response.products {            print("Found product: \(product.productIdentifier)")        }    }    func request(_ request: SKRequest, didFailWithError error: Error) {        print("Failed to load products with error:\n \(error)")    }}

Если все прошло успешно, то в результате в лог будет выведены две строчки:


Found product: barcode_month_subscriptionFound product: barcode_year_subscription

При этом, если будет ошибка, то SKProduct с таким ID не вернется. Такое может быть, если продукт по какой то причине стал не валидный.


Ну вот и все, очередной забор за нашей спиной.


Спасибо Алексею Гончарову x401om за подготовку статьи. В следующей статье мы разберемся, как проводить покупки внутри приложения: открывать/закрывать транзакции, обрабатывать ошибки, валидировать receipt и другое.

Подробнее..

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

08.04.2021 10:11:09 | Автор: admin

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

Понятно, что любые сервисы аналитики нужны, когда все идет не слишком хорошо: если LTV/CAC > 10, аналитикой можно и не пользоваться. Ниже рассмотрим полезные сервисы для freemium приложений на iOS, которые пригодятся почти любой команде для разработки и продвижения приложения.


Привет, меня зовут Виталик, сейчас я основатель Adapty.io, а до этого был iOS разработчиком и дата саентистом. Я поделюсь своим опытом по работе с сервисами для мобильных приложений.

Подавляющее большинство мобильных приложений монетизируются через трафик, то есть, через закупку рекламы. По моей оценке, у большинства приложений нет сайта или веб-версии, да и платформа часто одна iOS. Если нет у компании нет доступа ксильному органическому ресурсу (SEO, блог и т.д.), то все, что доступно компаниям для контролируемого продвижения это App Store Optimization (ASO) и реклама.

Сервисы, которые пригодятся для разработки и продвижения, можно разделить на шесть категорий:

  1. Атрибуция трафика. Поможет ответить на вопрос откуда (с какой рекламы) пришли пользователи и построить юнит-экономику.

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

  3. Отправка пуш-уведомлений. Опционально email.

  4. Подключение платежей (in-app purchases), сбор аналитики подписок и их роста. Подключить платежи на любой платформе это всегда тяжело, собрать данные и не ошибиться, это еще сложнее.

  5. ASO-инструменты. Аналитика и оптимизация органического роста в App Store.

  6. Крэшлитика. Аналитика крэшей приложения.

Ниже разберемся какие есть сервисы на рынке, сколько они стоят и в какой момент времени их стоит внедрять.

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

Атрибуция

Зачем нужна

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

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

Кого выбирать

На рынке есть несколько основных игроков, которые умеют атрибутировать Facebook: AppsFlyer (70% рынка), Adjust, Tenjin, Branch.

Сколько стоит

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

В целом, эта цена абсолютно адская в соотношении к предоставляемой полезности, поэтому с ростом объемов стоимость сервиса будет расти медленнее. Более того, вы обязаны будете заплатить даже если трафик не сконвертируется и не окупится, то есть по факту вы платите за установку. Такая стоимость может легко увеличить стоимость за установку (CPI) на 10%.

Вывод простой торгуйтесь, если хотите сэкономить.

Легко посчитать, сколько примерно будет стоить AppsFlyer. Предположим, вы покупаете трафик на $10 000 в месяц при стоимости установки $2 -> 5 000 атрибуций -> 5 000 * 0.06 = $300.

Отмечу, что если вы не получаете данных об атрибуции при выключенном доступе к IDFA, то вы не платите за атрибуцию. Я официально спросил AppsFlyer об этом и получил ответ Да, если у клиента включен LAT, мы не получаем IDFA/GAID и установка может уйти в органику. Но мы также попытаемся сделать атрибуцию через вероятностное моделирование. И если не получится, тогда уйдет в органику.

Продуктовая аналитика

Зачем нужна

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

Фактически, любая система аналитики состоит из двух частей:

  1. Хранилище данных. Сюда попадают сырые события о действиях пользователя.

  2. BI или визуализация данных, построение отчетов поверх сырых данных. Это то, с чем работает пользователь.

Кого выбирать

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

Свой стек традиционно собирают на реляционной колоночной базе данных, например, Clickhouse + Tableau для BI. Дополнительно для сбора данных я рекомендую использовать Cube.js. В качестве слов для гугления накидаю: AWS Lambda, Redash, Google Big Query, Serverless.

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

Из сервисный решений традиционно выделяют Amplitude и Mixpanel. Дополнительно сюда можно добавить App Metrica и Firebase Analytics (Google Аналитика для мобильных устройств).

Традиционно выбирают несколько аналитик, чтобы сравнить точность. Обычно берут бесплатную и платную.

Разработка и внедрение любой системы аналитики начинается с составления карты/списка событий, которые вы хотите отслеживать. После двух недель плотной работы над таблицей событий, вы получаете примерно такой вариант:

Который в дальнейшем добавляется в приложение и тестируется.

Сколько стоит

Стоимость своей реализации посчитать сложно. За оценку возьмите работу трех человек в течение 4-6 месяцев.

Прикинем для сервисов:

  • App Metrica и Firebase Analytics бесплатные.

  • Amplitude бесплатно до 10 миллионов событий в месяц.

  • Mixpanel бесплатно до 100 тысяч уникальных пользователей в месяц.

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

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

По моему опыту, обычно платный план начинается с $2000 в месяц.

Отправка пуш-уведомлений

Зачем нужна

У отправки пуш-уведомлений бывает две цели:

  1. Продуктовая. Например, вы получили уведомление о том, что такси уже приехало.

  2. Маркетинговая. Когда вы пытаетесь что-то (до)продать пользователю.

Более того, пуши можно разделить по:

  1. Триггерные и вызванные руками.

  2. Таргетированные или не таргетированные.

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

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

Кого выбирать

Как и в сервисах аналитики, тут есть вариант сделать свое решение, либо использовать сервисы. И то, и другое так или иначе работает через APNS (Apple Push Notifications Service).

Как и многое в экосистеме Apple для разработчиков, работать с APNS напрямую не очень просто и удобно. Есть как технические задачи (очередь пушей, скорость отправки и т.д.), так и чисто продуктовые придется матчить юзера и его пуш-токен самому.

Обычная схема использовать провайдера для рассылки пушей и обращаться к нему со своего сервера через удобный SDK/API. Как пример таких сервисов AWS SNS и Firebase Cloud Messaging. В FCM есть общая система с Android и аналитика по отправке и доставке, это приятное дополнение.

Самая готовая и хорошая система отправки пушей позволяет строить кампании рассылок, где вы указываете цепочки пушей, триггеры, задержки отправок, аудитории и тд. Это сложные и не дешевые системы, такие как Intercom, Push Woosh, OneSignal. Они поддерживают не только пуши, но также email, in-app сообщения и многое другое.

Сколько стоит

Firebase Cloud Messaging бесплатно.

AWS SNS один миллион бесплатно, дальше $0.5 за 1 миллион.

OneSignal сколько угодно сообщений, но 10 тысяч подписчиков.

Цена растет быстро и странно, поэтому если у вас 100К и больше MAU, я бы готовился к ценнику от $1 000 в месяц

ASO

Зачем нужно

ASO (App Store Optimization) аналог SEO, только для приложений, когда пользователь ищет что-то в поиске в App Store/Google Play. С помощью ASO можно:

  • Отслеживать ранжирование по ключевым словам

  • Отслеживать конкурентов

  • Прокачивать ранкинг, в том числе для локализации

И другие смежные задачи.

Есть гайдлайны Apple для улучшения ранкинга. В целом, оптимизация ASO и SEO это похожие вещи, которыми надо заниматься постоянно. Можно найти гайды и рекомендации, они есть в открытом доступе.

Кого выбирать

Я даже близко не эксперт в ASO, но знаю хорошие отзывы про AppFollow и AsoDesk. Как вариант, можно написать самописное решение на GitHub много библиотек, которые помогут с этим, например, здесь.

Сколько стоит

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

Подключение платежей и подписок

Зачем нужно

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

  • Корректно валидировать и проводить покупку. Поддерживать восстановление.

  • Привязывать покупку к пользователю.

  • Отслеживать серверные события подписки. Они могут происходить даже если пользователь удалил приложение.

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

Кого выбирать

По аналогии с аналитикой, тут есть два варианта:

  1. Сделать самому.

  2. Взять сервис.

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

Количество сервисов за последний год резко выросло. Среди них Adapty, AppHud, RevenueCat, Qonversion, Purchasely и если я подумаю, то еще парочку точно найду. Все сервисы объединяет базовое решение задач разработки, но некоторые ушли далеко вперед по маркетинговым фичам. Как показывает практика, техническая проблема проведения платежей самая простая во всей этой истории. Гораздо сложнее все корректно измерять и проводить A/B тесты платежных экранов.

Сколько стоит

В целом, все сервисы имеют похожую систему ценообразования: это фикс с порогом выручки, которая проходит через SDK + какой-то процент от выручки свыше определенного порога (около 0.05%). Для среднего приложения на объемах $50 000 в месяц можно ориентироваться на $250 долларов.

Разработка своей системы, в зависимости от сложности, у команды в 3-4 человека может легко занять 4-6 месяцев.

Крэшлитика (аналитика крэшей приложения).

Зачем нужно

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

Кого выбирать

AppMetrica

Firebase де-факто стандарт.

Выбирайте любой.

Сколько стоит

Бесплатно.


Главный вопрос делать свое или пользоваться сервисом? По моему опыту ответ такой если сервис закрывает действительно важную часть бизнеса (например, платежи), делать их самому нет никого смысла, это будет и дороже и дольше.

Я пишу про новости из мира мобильной разработки и маркетинга в канале Apple Developer News в Телеграм.

Подробнее..

Проектируем работу с iOS подписками клиентское или серверное хранение продуктов

30.07.2020 14:08:36 | Автор: admin

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



При встраивании подписок, иногда упускаются важные вопросы:


  • как и где хранить id для предлагаемых продуктов?
  • как часто планируется итерация по новым продуктам?
  • на каком этапе работы приложения стоит запрашивать продукт? На запуске или перед показом экрана
  • есть ли время на встраивание сложной системы для работы с продуктами или необходим быстрый запуск?

В отличие от огромного количества UX-подходов для работы с подписками, техническое решение имеет всего два пути развития:


  1. Мы переносим всю работу на сервер
  2. Вся логика работы с продуктами остается на клиенте

У каждого подхода есть плюсы и минусы, далее мы рассмотрим следующие вопросы:


  1. Хранение id продуктов: клиент или сервер?
  2. В какой момент работы приложения стоит запросить продукты?
  3. Кэшировать или не кешировать продукты?
  4. Аналитика покупок: и снова клиент или сервер?

Итак, погнали!


Хранение id продукта


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


И появляется головная боль, как и где хранить этот самый id: захардкодить на устройстве или получать с сервера.


При хранении на клиенте вам не нужно задумываться о контрактах работы с бекендом или поиском SaaS решения, если в вашем проекте отсутствует надобность в сервере. Вы просто сохраняете массив нужных вам id продуктов внутри приложения, запрашиваете их и показываете. В целом вы даже можете довольно быстро итерироваться по разным подпискам, просто обновляя приложение в store.


Но что если нам хочется чего-то большего? Что если нам хочется AB-тестов, что если мы хотим взять и при помощи парочки кнопок заменить во всем приложении старый продукт на новый? А, ну и, конечно, у нас при этом достаточно свободного времени. Тут на сцену и выходит сервер.


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


  1. Как клиент будет понимать к какому виду продуктов относится данный id
  2. Как различать на экране покупки какие продукты где показывать

Также стоит всегда иметь массив id продуктов на случай если сервер, вдруг, неожиданно "отвалится". Поскольку в ином случае есть шанс упустить пользователей, которые могут с удовольствием заплатить за ваш продукт, но просто не иметь такой возможности из-за технических неполадок.


Возможность быстрой интеграции Гибкость системы к изменениям Скорость интеграции
Клиент * ** ***
Сервер ** *** *

Запрос продуктов и кэширование


Когда запрашивать продукты? Это второй вопрос, о котором всегда стоит задуматься перед началом встраивания подписок в наше приложение. Поскольку чем раньше мы загрузим продукты, тем раньше мы сможем предложить пользователю купить нашу подписку. И в случае с клиентским хранением все обычно однозначно: запросили, сохранили, показали.



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



Сконцентрируемся немного на процессе запроса id продуктов с сервера и самих продуктов уже от Apple.



На данной диаграмме изображен процесс получения id продуктов с учетом возможности, что сервер может отвалиться, в таком случае мы всегда имеем список запасных id продуктов для загрузки. Если сервер возвращает ошибку, то чтобы не запрашивать бесконечно id, мы можем выставить лимит на попытки и, при достижении лимита, запросить продукты из локального стора. Но можно пойти "хитрым путем" и, запросив запасные продукты, продолжить стучаться на сервер раз в n-времени, и если id все же будут получены, то в таком случае можно по ним запросить актуальные продукты и подменить их кэше во время работы с приложением.


Однако стоит учитывать, что при таком подходе появляется промежуточный результат, при котором любой A/B тест способен сломаться. Представим ситуацию: пользователь заходит на экран покупки и видит продукты, загруженные из запасного списка. Затем пользователь выходит с экрана и продолжает пользоваться приложением. За это время загружаются актуальные продукты и снова показываются пользователю, и в этот раз пользователь совершает покупку. В такой ситуации перед бизнесом появляется вопрос, на который есть множество ответов, среди которых придется долго искать истину:Что мотивировало купить пользователя совершить покупку в этот раз?


Данный вопрос можно разрешить следующим образом


image

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


Итог


Встраивание покупок само по себе несложное действие, но стоит задуматься о том, как в дальнейшем будет развиваться ваш проект и продукт. Задайте себе вопросы:


  • Я планирую делать большой продукт или маленький пет-проект?
  • Как в дальнейшем я планирую развивать подписки?
  • У меня есть время на разработку сложного решения?

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru