iOS-приложение за три месяца, не зная ничего: только опыт

Статья для тех, кто думает о своём приложении, но не решается начать. Ну и для остальных. Здесь опыт, полученный за три месяца разработки с нулевыми знаниями на старте.

В конце статьи суть и выводы. Можно скролить сразу туда, если очень лень.

По зёрнышку, по семечке

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

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

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

У меня были знания HTML и CSS, небольшой опыт в JavaScript и совсем крохи в PHP. Опыт работы с дизайном в личных проектах. А вот знаний Swift или Objective-C (языки, на которых пишутся iOS-приложения) не было совсем. Также я имел весьма туманные представления о механике работы App Store, продвижении (ASO), настройке сертификатов, внутренних покупок, мобильной аналитики и прочем.

Ключевая вещь для понимания: сделать приложение — не главное. Как другие люди узнают о его существовании?

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

На секунду просто остановите мечты о покорении всех смартфонов планеты и представьте момент: вот вы опубликовали приложение в магазине. Что происходит? Вы внезапно видите в iTunes Connect тысячи установок каждый час? Этого не будет хотя бы потому, что статистика отстаёт на пару дней от реального времени (поэтому озаботьтесь сторонней и лучше в первом релизе). Даже для суперпопулярного Prisma использовались различные маркетинговые техники продвижения (например, окучивание редактора NYT).

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

Результат выполненного задания AVE

Студия «20 век Фокс»

Как бы подробно вы ни составили ТЗ, многие вещи изменятся несколько раз. Я очень детально обдумал и описал механики приложения. Экраны и их состояния отрисовал в Sketch. Там же сделал даже прототип с переходами.

Экраны приложения в Sketch AVE

В задачу входили разработка клиента (то, что непосредственно у пользователя) и сервер (часть, где хранятся данные, работает логика приложения). Разместил заказ и получил около 15 предложений от студий и отдельных разработчиков. Самое низкое по цене предложение было около 450 тысяч, самое высокое — 3 миллиона.

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

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

Разработка

Начал с просмотра курсов и первых попыток кодить. Через неделю мне стало лень смотреть видео, и я перешёл на лучший, на мой взгляд, метод обучения: есть задача → Google → Stackoverflow (чаще всего). Stackoverflow — это как «Ответы Mail.ru», только не у курильщика и про разработку.

Самое сложно при этом — сформулировать то, что ты, собственно, хочешь. Ответ на ваш вопрос будет в 99% случаев, об этом уже кто-то подумал. А если нет, то задумайтесь ещё раз, возможно, вы хотите сделать какую-то чушь.

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

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

Да, поначалу будет тоже непросто. Например, функции в Cloud Functions вы будете писать на JS. А база имеет NoSQL-тип, то есть сама её суть отличается от реализаций, с которыми вы могли работать на обычных сайтах и проектах (вроде MySQL).

Также Firebase почти из коробки даёт авторизацию с помощью Google, Facebook и других сервисов. Большой плюс: вы сможете сделать анонимную регистрацию (нам всем лень регистрироваться), к которой в будущем пользователь сможет уже привязаться.

Сколько стоит использование такого сервера (вы же не думали, что он бесплатный)? По-разному, зависит от нагрузки и оптимизации вашего приложения, но пока дёшево, за июнь у меня счёт всего в $2.

Готовьтесь, что будут факапы. После фичеринга (о нём позже) и ощутимого объёма установок я обнаружил, что у некоторых пользователей удаляются все их способности… Я упустил один момент в логике очистки достижений, и скиллы просто сносились в какой-то момент.

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

Аналитика и экономика

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

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

Чтобы получить LTV, берём когорту, смотрим сколько она принесла выручки на каждого. Кстати, это можно сделать прямо в iTunes Connect (у меня было предвзятое к нему отношение). Это очень мне помогло, потому что стандартными способами я не смог это увидеть ни в Firebase Analytics, ни в Facebook Analytics (он коряво считал выручку), а AppMetrika на момент выпуска ещё не имела отчёта по внутренним покупкам (сейчас уже есть).

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

У меня сейчас вот так:

Когортный анализ AVE

Нетрудно понять, что при стоимости установки в $0,5 и LTV в 5 центов (по последней неделе) существует десятикратная разница. Сходимость так себе. В такой ситуации можно снижать CPC, например, отправиться на поиски волшебной (мифической?) одна- и двухцентной установки в Google Ads (бывший AdWords), но есть вопросы к качеству такого трафика. Можно пытаться растить конверсию.

Многие сервисы и игры живут с несходящейся экономикой. Тратят личные или деньги инвесторов, прилагая усилия для роста метрик и привлекая аудиторию в минус. Я привёл свой пример для понимания, что отбивать платные установки в бесплатном приложении будет непросто.

Фичеринг

Потрясающий шанс протестировать вашу идею, не тратя деньги на платный трафик. Apple добавляет приложение в список рекомендуемых, «Приложение дня» или другие подборки. Что же происходит? У меня было вот так.

График установок AVE

AVE попало в «рекомендуемые» на третий день после релиза. Узнал я об этом случайно: увидел рост установок органики в AppMetrica и не мог понять, откуда он появился. Поискав, обнаружил приложение в подборке. Сказать, что мне повезло, ничего не сказать, ведь каждый день релизится около 200 новых приложений.

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

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

Выводы и эффективные вещи

  • Ключевой вывод, который нужно сделать: не стоит надеяться на рост, который возникнет сам по себе. Нужно чётко понимать, как вы будете получать установки.
  • Решили разрабатывать сами и нет знаний Objective-C? Изучайте и пишите на Swift. Даже не сомневайтесь, там всё уже ок.
  • Используйте сервисы наподобие Firebase. Это даст возможности, скорость и гибкость на старте. Позже, если понадобится, вы всегда сможете использовать более серьёзные решения.
  • Используйте встроенную возможность SKStoreReviewController от Apple для получения отзывов. Сама интеграция простейшая (пара строчек кода), а результат значительный. Ещё я бы рекомендовал поработать над логикой запроса отзыва. Например, отложить по времени, запускать после положительных событий (прохождение уровня или задания). К тому же сейчас стандартные манипуляции с отсылкой при негативном отзыве пользователя на почту не нравятся Apple при проверке.
  • Об этом уже сто раз писали, но я повторю: не запрашивайте разрешение на пуши при старте.
  • Реализация in-app-покупок с нормальной проверкой чеков (не на устройстве) может быть весьма трудоёмка. Вместо того чтобы упарываться самому, вы можете использовать сторонние сервисы (бесплатно).
  • Фичеринг — мечта и минимум х10 установок. Вы не найдёте выходы на редакторов App Store, чтобы договориться (у меня не получилось). Лучшее, что можно сделать, — это написать вот сюда.
  • Обязательно внедрите аналитику и настройте базовые события до релиза. Особенно in-app-покупки, если они у вас будут. На первых порах вполне можно пользоваться аналитикой от Apple.
  • Отслеживайте источники установок (трекинг). К примеру, с помощью AppMetrica. Создаётся специальная ссылка, по которой в будущем вы будете видеть установки, например, от конкретного блогера или даже поста.

А что за приложение-то?

AVE про действия и поступки. Ты выполняешь задания: от совсем простых в начале до сложных на более высоких уровнях. Развиваешь и открываешь новые способности (основаны на теории самоактуализации личности Маслоу). Кроме того, что растёшь сам, как бонус за выполнение получаешь награды: подарки и скидки на книги, еду, одежду и другие вещи.

Если есть идеи или пожелания → рад услышать.

func getReview()
return "завтра же начинаю делать свой app!"
error = "ничего не понял, но интересно"
Мне нужен негативный вариант 😠
Показать результаты
Переголосовать
Проголосовать
0
67 комментариев
Написать комментарий...
Artem Dzyuba

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

Ответить
Развернуть ветку
Alexandr Osmyakov
Автор

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

Элементарные вещи языка понятны через несколько дней (тут лучше всего курсы). Гораздо сложнее с паттернами, логикой и архитектурой. Делал, чтобы работало, потом улучшал. Например, сначала у меня была куча глобальных переменных без классов, потом были классы, которые инциализировались при каждом вызове функции, потом я узнал о синглтонах 🤦‍♂️ Да и сейчас много корявого.

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

По мотивации мне помогло только следующее. Я четко определил MVP, убрав все, что мог и расписал задачи на недели. Сделал это после 2 месяцев работы, когда понял, что можно улучшать код бесконечно. И, конечно, меня сильно мотивировала сама идея.

Ответить
Развернуть ветку
Aaa Bbb

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

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

Ответить
Развернуть ветку
Сергей Михайленко

А может не нужно решать за всех? Вы кто — директор ЗАО "Аудитория всея Интернета" или ООО «Хабр»? И то, что статья в закладках у более чем 600 человек, плюс почти 90 лайков — показатель, что даже на VC статья была полезна и интересна

Ответить
Развернуть ветку
Aaa Bbb

Для особо слепых "Ну это так, совет просто)", не бомби, дите

Ответить
Развернуть ветку
64 комментария
Раскрывать всегда