Покупки В Приложении Ios: Клиентское Или Серверное Хранилище Товаров

Сегодня около 80% мобильных приложений работают по системе подписки.

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



Покупки в приложении iOS: клиентское или серверное хранилище товаров

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

  • как и где хранить идентификаторы предлагаемых продуктов?
  • Как часто планируется внедрять новые продукты?
  • На каком этапе подачи заявки следует запросить товар? При запуске или перед демонстрацией экрана
  • У вас есть время на встраивание сложной системы работы с продуктами или вам нужен быстрый запуск?
В отличие от огромного количества UX-подходов по работе с подписками, техническое решение имеет всего два пути развития:
  1. Переносим всю работу на сервер
  2. Вся логика работы с продуктами остается на клиенте
У каждого подхода есть плюсы и минусы, и ниже мы рассмотрим следующие вопросы:
  1. Хранение идентификаторов продуктов: клиент или сервер?
  2. На каком этапе приложения следует запрашивать продукты?
  3. Кэшировать или не кэшировать товары?
  4. Аналитика покупок: снова клиент или сервер?
Итак, начнем!

Сохранение идентификатора продукта

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

с подписками.

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

При хранении на клиенте вам не нужно думать о контрактах на работу с бэкендом или поиске SaaS-решения, если ваш проект не требует сервера.

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

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

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

Здесь на сцену выходит сервер.

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

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

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

Как минимум, необходимо учитывать такие вещи, как:

  1. Как клиент поймет, к какому типу товара относится этот идентификатор?
  2. Как отличить на экране покупки какие товары где показаны
Также стоит всегда иметь массив id товаров на случай, если вдруг сервер «отвалится».

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

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


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

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

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

А в случае с клиентским хранилищем обычно всё понятно: запросил, сохранил, показал.



Покупки в приложении iOS: клиентское или серверное хранилище товаров

Тогда в случае, когда мы работаем с сервером, появляется ветка.

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

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



Покупки в приложении iOS: клиентское или серверное хранилище товаров

Давайте немного сосредоточимся на процессе запроса идентификаторов продуктов с сервера и самих продуктов у Apple.

Покупки в приложении iOS: клиентское или серверное хранилище товаров

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

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

Но можно пойти «хитрым путем» и, запросив запасные товары, продолжать стучать на сервер раз в n раз, и если id все равно будут получены, то в этом случае по ним можно запросить текущие товары и заменить их.

их в кэше во время работы с приложением.

Однако стоит учитывать, что при таком подходе появляется промежуточный результат, при котором любой A/B-тест может сломаться.

Представим ситуацию: пользователь заходит на экран покупки и видит товары, загруженные из запасного списка.

Затем пользователь выходит из экрана и продолжает использовать приложение.

За это время актуальные товары снова загружаются и показываются пользователю, и на этот раз пользователь совершает покупку.

В такой ситуации перед бизнесом встает вопрос, на который есть множество ответов, среди которых придется долго искать истину: Что побудило пользователя совершить покупку на этот раз? Эту проблему можно решить следующим образом

Покупки в приложении iOS: клиентское или серверное хранилище товаров

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



Нижняя граница

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

Задайте себе вопросы:

  • Планирую ли я создать большой продукт или небольшой любимый проект?
  • Как я планирую развивать подписки в будущем?
  • Есть ли у меня время на разработку комплексного решения?
Эти три вопроса помогут вам понять, какие шаги по проектированию вам следует предпринять и куда смотреть дальше.

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

.



О Адаптации

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

Адаптивность значительно упрощает работу по добавлению покупок:

  • Встроенная аналитика позволяет быстро понять основные метрики приложения.

  • Когортный анализ отвечает на вопрос: как быстро сходится экономика.

  • A/B-тесты увеличивают доход приложения.

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

  • Рекламные кампании уменьшить отток аудитории.

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

  • Серверная проверка и API для работы с другими платформами.

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

Теги: #iOS #разработка iOS #разработка ios #Swift #подписки покупка в приложении #adapty

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.