iOS-приложение за три месяца, не зная ничего: только опыт
Статья для тех, кто думает о своём приложении, но не решается начать. Ну и для остальных. Здесь опыт, полученный за три месяца разработки с нулевыми знаниями на старте.
В конце статьи суть и выводы. Можно скролить сразу туда, если очень лень.
По зёрнышку, по семечке
Приложение — великолепный шанс донести до аудитории пользователей, в том числе других стран, свою идею. Одновременно с этим App Store — это кладбище пустующих проектов, в которые были вложены время и деньги в надежде на то, что проекты нарисуют клюшку.
Возможно, вы и сами видели не одну печальную статью о тратах в тысячи долларов на разработку и рекламу — и о заработке в пару сотен. Я в первую очередь хотел реализовать замысел, получить опыт в новой сфере и сделать что-то стоящее.
Можно ли самому создать и выпустить приложение за короткий срок, совсем не имея релевантного опыта? Похоже на то.
У меня были знания HTML и CSS, небольшой опыт в JavaScript и совсем крохи в PHP. Опыт работы с дизайном в личных проектах. А вот знаний Swift или Objective-C (языки, на которых пишутся iOS-приложения) не было совсем. Также я имел весьма туманные представления о механике работы App Store, продвижении (ASO), настройке сертификатов, внутренних покупок, мобильной аналитики и прочем.
Пока в вас горит идея приложения, которое завоюет мир, вы просто пропускаете такие мысли мимо своего сознания. Каким бы невероятным ни было приложение, о нём сначала должны узнать.
На секунду просто остановите мечты о покорении всех смартфонов планеты и представьте момент: вот вы опубликовали приложение в магазине. Что происходит? Вы внезапно видите в iTunes Connect тысячи установок каждый час? Этого не будет хотя бы потому, что статистика отстаёт на пару дней от реального времени (поэтому озаботьтесь сторонней и лучше в первом релизе). Даже для суперпопулярного Prisma использовались различные маркетинговые техники продвижения (например, окучивание редактора NYT).
Как только вы поймёте, как привлекать установки (например, у вас есть деньги на платный трафик), начинайте разработку. Дальше от вас требуется только дисциплина. Её, кстати, можно подтянуть с помощью AVE.
Студия «20 век Фокс»
Как бы подробно вы ни составили ТЗ, многие вещи изменятся несколько раз. Я очень детально обдумал и описал механики приложения. Экраны и их состояния отрисовал в Sketch. Там же сделал даже прототип с переходами.
В задачу входили разработка клиента (то, что непосредственно у пользователя) и сервер (часть, где хранятся данные, работает логика приложения). Разместил заказ и получил около 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 на момент выпуска ещё не имела отчёта по внутренним покупкам (сейчас уже есть).
Стоимость привлечения за указанный период вы можете посмотреть в своих рекламных кабинетах. А со временем можно улучшать подход к аналитике.
У меня сейчас вот так:
Нетрудно понять, что при стоимости установки в $0,5 и LTV в 5 центов (по последней неделе) существует десятикратная разница. Сходимость так себе. В такой ситуации можно снижать CPC, например, отправиться на поиски волшебной (мифической?) одна- и двухцентной установки в Google Ads (бывший AdWords), но есть вопросы к качеству такого трафика. Можно пытаться растить конверсию.
Многие сервисы и игры живут с несходящейся экономикой. Тратят личные или деньги инвесторов, прилагая усилия для роста метрик и привлекая аудиторию в минус. Я привёл свой пример для понимания, что отбивать платные установки в бесплатном приложении будет непросто.
Фичеринг
Потрясающий шанс протестировать вашу идею, не тратя деньги на платный трафик. Apple добавляет приложение в список рекомендуемых, «Приложение дня» или другие подборки. Что же происходит? У меня было вот так.
AVE попало в «рекомендуемые» на третий день после релиза. Узнал я об этом случайно: увидел рост установок органики в AppMetrica и не мог понять, откуда он появился. Поискав, обнаружил приложение в подборке. Сказать, что мне повезло, ничего не сказать, ведь каждый день релизится около 200 новых приложений.
В итоге приложение пробыло в рекомендуемых полтора месяца (пусть и двинувшись с первого экрана, что снизило трафик). Установки, отзывы, тесты, обратная связь без привлечения платного трафика — это идеальный вариант старта.
Кстати, достаточно сложно понять логику редакторов App Store. Например, я видел приложения в подборках с последним обновлением два года назад, с низкой оценкой и множеством негативных отзывов.
Выводы и эффективные вещи
- Ключевой вывод, который нужно сделать: не стоит надеяться на рост, который возникнет сам по себе. Нужно чётко понимать, как вы будете получать установки.
- Решили разрабатывать сами и нет знаний Objective-C? Изучайте и пишите на Swift. Даже не сомневайтесь, там всё уже ок.
- Используйте сервисы наподобие Firebase. Это даст возможности, скорость и гибкость на старте. Позже, если понадобится, вы всегда сможете использовать более серьёзные решения.
- Используйте встроенную возможность SKStoreReviewController от Apple для получения отзывов. Сама интеграция простейшая (пара строчек кода), а результат значительный. Ещё я бы рекомендовал поработать над логикой запроса отзыва. Например, отложить по времени, запускать после положительных событий (прохождение уровня или задания). К тому же сейчас стандартные манипуляции с отсылкой при негативном отзыве пользователя на почту не нравятся Apple при проверке.
- Об этом уже сто раз писали, но я повторю: не запрашивайте разрешение на пуши при старте.
- Реализация in-app-покупок с нормальной проверкой чеков (не на устройстве) может быть весьма трудоёмка. Вместо того чтобы упарываться самому, вы можете использовать сторонние сервисы (бесплатно).
- Фичеринг — мечта и минимум х10 установок. Вы не найдёте выходы на редакторов App Store, чтобы договориться (у меня не получилось). Лучшее, что можно сделать, — это написать вот сюда.
- Обязательно внедрите аналитику и настройте базовые события до релиза. Особенно in-app-покупки, если они у вас будут. На первых порах вполне можно пользоваться аналитикой от Apple.
- Отслеживайте источники установок (трекинг). К примеру, с помощью AppMetrica. Создаётся специальная ссылка, по которой в будущем вы будете видеть установки, например, от конкретного блогера или даже поста.
А что за приложение-то?
AVE про действия и поступки. Ты выполняешь задания: от совсем простых в начале до сложных на более высоких уровнях. Развиваешь и открываешь новые способности (основаны на теории самоактуализации личности Маслоу). Кроме того, что растёшь сам, как бонус за выполнение получаешь награды: подарки и скидки на книги, еду, одежду и другие вещи.
Скачать, оценить и оставить царский отзыв. Пока только для iOS.
Если есть идеи или пожелания → рад услышать.
Комментарий недоступен
Релевантного опыта не было) эти знания помогли, возможно, в целом, но не в частности.
Да и дизайн UI все таки был абсолютно новой сферой для меня. Тем не менее посчитал честным написать про такой опыт.
Вроде все замечательно написано, но осадочек присутствует... Статья ради продвижения приложения. Винить конечно за это нельзя, но по мне, можно было обойтись просто названием, кому надо, найдут в сторе!
Тот чувак, что начал кодить и слился... так часто поступают джуны, в надежде быстро запилить крутой апп для портфолио, ничего удивительного.
Всё норм, любая статья — это попытка продвинуть себя, свой бренд, компанию, книгу, приложение... Если автор дал несколько полезных советов и написал интересно, мы не в обиде.
Норм статья для начинающих. Основные грабли раскрыты. Зачет и респект
Кстати, при оценке юнит-экономики надо учитывать, что CPC делится на 2-3 за счет того, что налитый в достаточных количествах трафик повышает приложение в выдаче и приводит еще примерно столько же трафика как бы бесплатно. Но десятикратный разрыв это, конечно, не покроет.
"в надежде на то, что проекты нарисуют клюшку" - я не встречал такой метафоры.
Медленный, а затем взрывной рост. Например, здесь: https://rb.ru/glossary/hockey-stick/
были знания html/css, небольшой опыт с JS и совсем крохи с PHP. Опыт работы с дизайном в личных проектах.
Это какой-то особый «ноль» среди программистов?
Комментарий недоступен
Статья интересная. Однако я так и не увидел момент между "и я перешел на лучший.." и началом установок. Как вы пилили приложения 3 месяца, не зная язык? Какие были проблемы, как вы их решали? Как мотивировали себя эти 3 месяца, ведь без базы наверняка были долгие затыки.
Спасибо 👌
Про детали самой разработки хочу рассказать на Хабре. В начале делаешь много глупых вещей -> их хотел описать простым языком, чтобы другие могли избежать.
Элементарные вещи языка понятны через несколько дней (тут лучше всего курсы). Гораздо сложнее с паттернами, логикой и архитектурой. Делал, чтобы работало, потом улучшал. Например, сначала у меня была куча глобальных переменных без классов, потом были классы, которые инциализировались при каждом вызове функции, потом я узнал о синглтонах 🤦♂️ Да и сейчас много корявого.
Большинство затыков реально решается поиском. Бывало, что я не мог понять причину ошибки по несколько дней. В итоге либо находил решение, либо просто делал по-другому. У меня и сейчас есть набор фич, которые я слабо представляю, как сделать.
По мотивации мне помогло только следующее. Я четко определил MVP, убрав все, что мог и расписал задачи на недели. Сделал это после 2 месяцев работы, когда понял, что можно улучшать код бесконечно. И, конечно, меня сильно мотивировала сама идея.
очередной todo list для прокрастинирующих подростков
а прокрастинируют только подростки?
Хорошая статья, интересно было читать!)
На днях скачивал это приложение, показывал друзьям, и тут такая статья выходит. Три месяца вам потребовалось, чтобы одновременно научиться и сделать приложение? Включая публикацию в стор?
Здорово, что рассказали друзьям 👍
Да, можно сказать 3,5 месяца, с учетом публикации (попыток сделать более-менее стабильную версию, ожидания ревью и тд). Качество кода, конечно, оставляет желать лучшего даже сейчас (понимаешь это с каждым днем).
Oh my god
Короче приложение сомнительное, но то, что вы получили нужные вам навыки - это здорово!
Не думали, а знали. Там есть бесплатный тариф, лимиты которого чтобы побить, нужно очень сильно постараться.
На мой взгляд, совсем бесплатно получится только в очень простых приложениях... Например, бесплатно в Cloud Functions можно работать только с гугл-сервисами (нельзя делать запросы к 3 стороне), планировщик не бесплатный. Но стоимость незначительная.
Идея приложения прикольная. Спасибо за статью! Скачаю и попробую
Firebase - тема) сделал вебаппу в феврале , включил гибкий тариф, в приложении более 1000 пользователей, за пол года почти вот накапало 2 бакса) плюс они же покрываются трехста долларами, который даёт Гугл на год после того, как сделал гугл карты с платным лимитом тоже
Главное думаю при создании там базы и проекта выбирать европу/Азию , если знаешь что целевая аудитория из рашки будет например , нет нет, а пинг поменьше будет) я вот не уследил по началу, в итоге 100% русская аудитория долбит американские серверы( хоть и все равно задержка минимальная
Я тоже упустил этот момент, стоит us-central. Но действительно не катастрофа)
Чот слишком кликбейт в заголовке
Дайте возможность переключить язык, а не просто брать из системы :)
Почти все готово для английского, бьюсь только с переключением "on fly" (без перезагрузки)... Тексты всех заданий тоже почти переведены.
Думаю, будет в одной из следующих версий.
Вы начинающий?
Да я некоторых слов даже не понял!
Да, когда начинал - почти ничего не знал (на странные слова старался поставить ссылки). Все получится, если приложить усилия)
круто, респектую 💪
(пробисило что даже сюда вставил трек ссылки, так и не смог скачать из-за эдблока)
Автор молодец, респект тебе. Ждем приложение под android.
как не зная ничего (работал гуманитарием в библиотеке и было скучно) прочитать 2 книги и построить ракету на Марс за 30 дней
а в середине статьи косвенно указывается, что папа - депутат, а сам космонавт сидит на ЛСД
Комментарий недоступен
На андроид нет, пока не осилил) А аналог выпустили, можно ссылку? Очень интересно.
Александр, посмотри на Native Script - получится разрабатывать и под iOS и под Андроид. На будущее и как вариант. Ты писал, что у тебя есть опыт с веб-разработкой.
Под него как минимум нет нормальных IDE. Тогда уж лучше Flutter.
Блин, как же хочется на андроид. Кто-нибудь знает аналоги?
Спасибо за статью. Было неожиданно увидеть автора этого приложения на vc. Примерно две недели назад нашел ваше приложение где-то по рекомендациям внутри App Store, когда собирал референсы, т.к. планирую делать приложение в сфере саморазвития и образования. Ваша идея мне очень понравилась, была необычной, и одной из моих любимых. Был бы рад пообщаться с вами, ваш опыт вдохновляет.
Большое спасибо!
Можно написать в FB или Telegram (@osmyakov) - с удовольствием пообщаюсь.
Как понять что приложение прибыльно – понятно.
А как понять что приложение пользуется спросом и в него стоит вкладывать ресурсы на дальнейшую доработку и доведение до монетизации?
Сразу делать монетизацию не вариант (куча причин лично для меня).
Вот вложил я, например, 100 баксов на трафик, а пришло 64 пользователей. Это значит что оно пользуется спросом и в... А если 63, то уже все, шляпа?
Тут про анализ рынка в разрезе спроса, а не экономики.
Промахнулся с ответом (ниже).
Возможно кто-то более опытный предложит другое, но я бы смотрел на метрики:
- рост Retention, DAU, MAU
- время в приложении (если важно),
- свои события (достижение уровня, использование фич)
Если метрики растут, то и будущая монетизация будет лучше работать (но это не точно).
Введенная монетизация может изменить поведение/конверсии и смысл данных потеряется.
63-64 платных инсталла без LTV просто не с чем сравнить...
А можно еще данных про запуск (именно релиз первой версии) проекта:
- потратил денег: __ USD
- потратил дней жизни: ____ дней
Если считать только траты на приложение (не на жизнь): около 5к руб + 99$ акк apple
Со старта самостоятельной разработки до выпуска 1 версии прошло где-то 3,5 месяца. Если брать с дизайном, ТЗ/обдумыванием в голове - побольше, но посчитать сложно.
Подскажите как именно получали базу по Swift. Если человек ноль в программировании, то как за 3,5 месяца написать полноценное приложение я не представляю, может быть потому что уделяю языку по часу в день (работа)...
Интересует именно очередность этапов изучения, которая дает быстрое погружение и прогрес (учитывая что на ютубе есть лекции по алгоритмам, которые можно смотреть неделями). Матерые программисты меня закидают, но новичку нужны постоянные результаты для того, чтобы мотивация не умерла. А совершенствовать знания можно уже потом, когда как минимум понимаешь зачем это нужно.
Да, я тратил, обычно, полный день.
Полностью согласен насчет результатов и выгорания. Было жутко коряво (и сейчас тоже), но я видел результат. С каждым днем многое становятся понятней. Единственное я бы рекомендовал не копипастить код, а переписывать ручками и пытаться понять (если непонятно ничего страшного) - я так быстрее учился.
По этапам у меня было так (что помню):
1. Курсы
- курс Дениса Быструева (бесплатная часть), он тут в комментариях отметился
- несколько курсов со swiftbook
2. Ролики
Смотрел ролики на ютуб по нужным мне вещам. Например, получение и запись данных в базу Firestore или как сделать tabview. Выбирал несколько и смотрел, какой больше нравится или где понятней. Больше всего заходил "kilo loco" и какой-то индус, было мало воды.
Сейчас это в основном stackoverflow и для совсем нового ютуб.