Как я свое приложение в эппл стор выкладывал
3 поста
Всем привет! Отправил ноут в ремонт, надеюсь оживёт🤞 ...
Изначально платная подписка на программу разработчиков эппл меня почему-то сильно напрягала, первая мысль была ...
... сделать приложение платным, но без подписки. Я наивно думал что смогу поставить символическую цену и довольно быстро отбить свои 100€😅 Вторая мысль заключалась в том чтобы завести Patreon или Buy Me a Coffee и оставить ненавязчивую ссылку, однако посмотрев пару форумов на тему доната в приложениях этот вариант отпал. Писали что донатят очень редко и лучшим способ поднять немного бабла будет либо подписка, либо реклама. Оба этих варианта меня не устраивали и я остановился на платном приложении. Смущало только то, что врятли кто-то будет платить за что-то сомнительное без возможности это хоть как-то потестить, но я решил не заморачиваться и оставить этот вопрос на потом. Вместо этого я начал думать о том, как рекламировать свой эпп.
До недавнего временя мне казалось что продавать хорошо сделанный продукт очень легко, ведь люди сами всё увидят и поймут без рекламы и прочей ерунды, но я быстро понял, что никто ничего не увидит и не поймёт. Идея заключалась в том чтобы создать аккаунт в TikTok и Instagram и как-то промоутить свой эпп с помощью картинок/видео сгенерированных в Midjourney, чем я и стал заниматься в течение следующих пары недель. Посты должны были быть связаны с качалкой, а в шапке профиля должна была красоваться ссылка на эпп...
Я надеялся собрать небольшую аудиторию ещё до релиза, но моя рекламная компания как и следовало ожидать не увечалась успехом и я забросил всё на месяц в пользу Metro: Exodus...
За это время меня немного отпустило и я понял для себя несколько вещей:
я пишу в первую очередь для себя, т.е. для личного использования и обучения, а на такие цели ста евро не жалко
вести аккаунт в соцсетях с сомнитьным контентом и с целью что-то продавать/рекламировать тежело, скучновато и это не то, что доставляет мне удовольствие
глупо останавливаться на таком этапе так и не доведя дело до какого-то логического завершения
Так я подписался на программу разработчиков и начал готовиться к релизу.
Сам по себе релиз дело нехитрое, но и тут возникло несколько сложностей. Оказалось что мне нужен сайт на котором будет размещена политика конфиденциальности. Тут всё было просто, GitHub позволяет бесплатно хостить статичные страницы прямо из репозитория. Быстро создав минимальную политику конфиденциальности с помощью ИИ и воспользовавшись MkDocs для создания страницы я получил готовый "сайт": workoutlogger.github.io/.
Далее я столкнулся с проблемой скриншотов. По неведомой мне причине я сразу не додумался делать скриншоты для всех типов экранов в соответсвующих симуляторах, вместо этого я скачал какое-то китайское приложение которое сразу генерило все нужные размеры картинок, но оно было жутко корявым. Ещё пришлось сделать скрины для iPad хоть я изначально не планировал, но оказалось что я не снял галочку в настройках проекта и iPad теперь числиться как один из возможных девайсов.
Закончив все приготовления я отправил эпп на ревью и сидел боялся что его быстро зареджектят по тем или иным причинам, например из-за того же сайта или ещё хуже, приложения не запустится, но к моему удивлению никаких вопросов не было и в течение следующих 2-3 часов мой логгер был в эппл сторе. Изи катка...
Собственно таким был процесс начиная с идеи и до релиза, чем я и хотел поделиться. Напоследок ещё пара моментов:
я не могу нарадоваться тому факту, что в течение всего этого времени я пользовался Git и потери связанные со смертью моего компа минимальны
не сдуться из-за каких-то мелочей и тараканов в голове и довести дело до стадии когда можно пользоваться своим приложением было для меня гораздо сложнее, чем казалось в начале, но оно того стоило. Теперь у меня есть пэт проект который можно дальше по возможности развивать, есть длинный лист задач которые хотелось бы попробовать реализовать, например:
добавить больше языков
добавить больше красивых визаулизаций
поиграться с поддержкой смарт часов и тд.
делать логгер платным я пока не планирую. Само приложение еще сыровато и вся история с продажей больше напрягает чем приносит удовольствие.
На этом всё, всем спасибо!
Всем привет! Мой ноут пока не воскрес, поэтому продолжим...
Предисторию можно почитать тут.
Первым делом я решил поделать оффициальные туториалы и сразу же наткнулся на такой абзац:
Это руководство для опытных разработчиков. Вам необходимо знать Swift, прежде чем начинать, поэтому начните с обзора основ языка программирования Swift, чтобы ознакомиться с синтаксисом, типами данных и уникальными особенностями языка...
Сильно опытным разработчиком я себя не считаю и со Swiftом до этого не сталкивался, но и читать сухую документацию очень не хотелось, так как на это ушло бы пару дней, а я жаждал побыстрее что-нибудь запустить хотябы в симуляторе.
Без долгих раздумий я пропустил обзор основ и приступил к туториалам. Началось всё довольно хорошо, быстро разобрался с базовыми концептами, а дальше началась история с рисованием и воспроизведением аудио, которая не вписывалась в рамки логгера для качалки, поэтому решив что знаний полученных в первых трёх-четырёх уроках мне должно хватить я принялся за работу над своим детищем.
Для MVP (минимально жизнеспособный продукт), другими словами для возможности перехода на своё приложение, мне были нужны следующие функции:
возможность добавлять/удалять упражнения из списка
возможность добавлять/удалять сеты к этим упражнениям
возможность просматривать историю
Я начал накидывать скелет приложения и создавать первые вьюшки и как ожидалось довольно быстро начались проблемы с незнанием Swiftа. Тут на помощь приходил ChatGPT, который порой выдавал полнейшую дичь, но идеи куда капать подкидывал хорошо. С другой стороны доделай я туториалы до конца его помощь во многих моментах вообще бы не понадобилась. Может в следующий раз дочитаю... хотя кого я обманываю 😅
Помимо ChatGPT я конечно же не пренебрегал и старым добрым гуглом и моё приложение начало постепенно вырисовываться.
Одним из первых встал вопрос хранения данных ибо менять этот момент в будущем очень напряжно. Полноценный бэкенд казался перебором, хотя в перспективе есть планы попробовать с нуля всё поднять. В туториалах приводился пример хранения данных локально в JSON файле, но такой вариант меня тоже не устраивал, в этом случае пришлось бы либо создавать много файлов под каждый тип объекта, например файл для упражнений, файл для сетов, файл для сессий и тд. и потом как-то их комбинировать, либо хранить всё в одном файле, что не оптимально и сложно адекватно смоделировать. Идеальным вариантом казался SQLite и я начал смотреть в этом направлении. С помощью гугла я обнаружил что в iOS есть свой фрэймворк как раз подходящий для таких задач как у меня и провозившись пару недель с помощью пары видео на YouTube и несколько примеров в GitHub я смог настроить CoreData, который по сути и юзает SQLite внутри как я хотел.
Разобравшись с хранением данных я задался вопросом откуда взять список начальных упражнений. Был вариант создать упражнения используя само приложение и для первых тестов это было ещё реалисточно, но создавать 20-30 упражнения ручками мне не хотелось. В итоге я остановился на том, чтобы читать список упражнений из CSV файла и записывать в CoreData при первом старте, а при дальнейших стартах приложения обновлять то что изменилось. Сами упражнения и описания к ним я сгенерировал с помощью ChatGPT и таким образом у меня появился список из 100 упражнения на основые группы мышц.
Довольный собой я решил что пора переходить к тестированию в реальных условиях и начал дублировать записи в свой эпп. Все работало более или менее стабильно, само собой было много мелких багов, которые легко исправлялись по вечерам. Смущало только одно, в использовнии приложение было крайне неудобным, а именно:
каждый раз приходилось искать упражнения в списке
каждый раз приходилось выставлять вес и подходы, хотя я не повышал веса каждую тренировку и можно было просто использовать последний вес
и ещё несколько подобных мелочей на которые я изначально не обращал внимания и на доработку которых ушло еще несколько недель.
Помимо проблем с удобством использования нарисовался еще один как я думал баг, который у меня никак не получалось отловить. Дело было в том что примерно спустя неделю после установки приложения на смартфон оно переставало запускаться. Это жутко подбешивало, так я пару раз удалял его и перезаписывал что означало потерю всей истории. После нескольких таких удалений я наконец догнал, что можно перезалить не удаляя и в таком случае история сохранится, но и это не спасало, потому как я довольно часто забывал перезалить приложение вовремя. В итоге дело оказалось в сертификате который без подписки на программу разработчиков эппл был валидным только одну неделю, а значит пришло время создавать полноценный девелопеский аккаунт. Ничего не предвещало беды и я уже начал предствалять как в течение следующей недели опубликую прилагу, но мой энтузиазм пошатнулся когда оказалось, что подписка стоит 100€ в год. Это немного меняло мой изначальный концепт, но об этом и о самом процессе подготовки к релизу расскажу в следующей части…
Все спасибо кто дочитал!
Посмотреть скрины или скачать можно тут.
Буду рад любым отзывам, спасибо и физкульт-привет)
Всем привет! Меня зовут Влад и я алкоголик пишу своё первое приложение на iOS. На прошлой неделе мой ноут залило водой из детской бутылочки и он отказался включаться. Так за неимением возможномсти писать код следующих недели две я буду писать посты...
Последние пару лет постоянно крутились мысли о том, что нужно начинать что-то своё, мечты работать на себя. Критериев для нового начинания было несколько, а именно возможность заниматься новым делом в свободное от основной работы время, наличие необходимых навыков либо желание таковые получить, минимальные вложения средств, а также возможность получить первый результат в течение 6 месяцев. Идеи были довольно разношерстными, от дропшиппинга или print-on-demand магазина маек до своего кафе или магазина детских игрушек. Многое отметалось ибо скучно, но в основном из-за страха, что что-то не получится.
Два года назад я становлюсь отцом и мы качаем приложение для отслеживания продуктов жизнедеятельности растущего организма. Не помню уже название, но со своей задачей оно справлялось. Смущало только то, что некоторые функции, которые по моему скромному мнению должены были быть бесплатными, были доступны только с подпиской, и я подумал, а не запилить ли мне по быстрому на коленке свое приложение.
Идея мне нравилась, так как она подходила под все критерии: прогить можно по 1-2 часа в день, учиться мобильной разработке желание было, никаких средств не требовалось (это не совсем так, расскажу в следующей части) и в пол года вполне можно было уложиться. Продавать я его не планировал, основная идея заключалась в обучении и персональном использовании. Также хотел наладить процесс релиза, т.е. иметь возможность делать изменения и выкладывать новые версии быстро. В дальнейшем если всё пойдёт хорошо можно пробовать монетизировать и иметь какой-то пассивный доп. доход, что уже хорошо. И так по ночам, сидя на фитнес шаре качая дочь на одной руке и печатая второй я начал пилить.
Первым делом нужно было определиться на чем писать и под какую платформу. Я решил не ограничивать себя только iOS, так как не мог себе позволить оставить владельцев android смартфонов без возможности пользоваться моим прекрасным детищем, и поэтому выбирал между React Native и Flutter. Для работы нужно было поучить React чтобы поддерживать одну внутреннюю программку и я решил что это хороший аргумент в пользу React Native. Начал я как полагается с официальной документации и попытки запустить Hello World в симуляторе, но дело пошло не так гладко как я ожидал. Процесс настройки рабочей среды был настолько кривым, что моя мотивация резко застремилась к нулю. Зависимости не хотели устанавливаться, симулятор не хотел запускаться либо падал без видимой причины. Также процесс релиза приложения был для меня неочевидным и провозившись недели 2-3 я забросил эту идею. К тому же у ребёнка устаканился режим и даже оплаченным приложением пользоваться перестали.
Конец!
Прошло 9 месяцев, мы переехали в другой город и я записался в спортзал. Попытки были и раньше, но на долго меня не хватало. Сейчас же зал находился в 2х минутах ходьбы, поэтому вероятность того что я буду пропускать была сведена к минимуму. Я начал искать приложение для записи подходов и весов и обнаружил что их добуя. Одно из первых попавшихся меня устраивало, но со временем я снова обнаружил что нужна подписка чтобы иметь возможность комментировать все упражнения, а не одно за сессию, а так же не было возможности создания больше трех планов/рутин.
Для проформы, я считаю что нужно платить за любой сервис тем или иным способом: смотреть рекламу, подключать подписку или мириться с тем что твои данные продают. Тут дело в том, что большая чать функцианала доступного с подпиской мне не нужна, а то что нужно искуственно ограничено с единсвенной целью заставить меня купить то что мне не надо.
Таким образом я снова возвращаюсь к идее своего приложения и к вопросу на чём писать. На этот раз я решаю что нужно идти путём наименьшего сопротивления - start small learn fast так сказать. Учитывая что писал я в основном для себя, я решил ограничится поддержкой iOS. Порог вхождения был очень низким, я начал с официальных туториалов эппл и в течение первых двух часов загрузил тестовый эпп на свой телефон. Так по вечерам после основной работы я и начал работать над очередным логгером для качалки 💪
Пока всё, спасибо всем кто дочитал!
В следующих постах напишу:
как проходит процесс написания и как я решил не учить Swift, а спрашивать ChatGPT
как проходил первый релиз
дальнейшие планы
Посмотреть скрины или скачать можно тут. Бесплатно, без реламы, смс и регистрации)