У каждого свой жизненный путь и выбор продуктов, у меня видимо какой-то фетиш делать продукты для Apple и их API... Вот уже 4-ый год как я делаю плеер для Apple Music (статья 1, 2, 3), а 20 ноября 2022 года вместе с женой придумали и начали делать ASO.dev.
Когда в статье появляется мы - то я имею в виду мы, а не я такой крутой перец и пишу о себе от множественного числа
Начало
И так, обо всем по порядку, ну или как выйдет :D
С сентября 2022 мы очень сильно переписали плеер, добавили поддержку Spotify и вообще хотели добавить пользователей к проекту.
Развивать инди-проект без денег на маркетинг и вообще без денег очень тяжело, поэтому весь трафик для meows.app приходит из App Store - в приложении ~25 000 новых установок в месяц органики (чисто из поиска, есть куда расти).
Изменения за год (надо наращивать “conversion rate”)
И это не только Россия, но и все остальные страны, приложение заполнено на 39 локализаций (все в App Store), на тот момент еще с помощью переводов и таблиц от Google вручную.
Собственно, это и стало проблемой, решая которую мы создали ASO.dev. Когда тебе надо перевести "Что нового" на очень много языков - ты просто всегда пишешь "Исправления и улучшения", а твое ASO очень ограничено и направлено всего на несколько стран.
Так что же такое это ASO, черт возьми?! ASO - это AppStore Search Optimization (не прошло и пол года, как я расшифровал это вам).
По-простому - это привлечение пользователей из поиска магазина приложений (App Store, Google Play и другие).
Вообще, ASO довольно сложен и дорог, тарифы на сервисах для ASO обычно начинаются от 100 долларов/месяц, есть и немного дешевых, но там и функций почти нет, в лучшем случае можно сделать половину правок из-за ограничения по тарифам.
Еще немного теории как работают с ASO: берут приложение и собирают к нему список ключевых слов (инструментов много) - долго, сложно и дорого.
Вообще aso-шники очень трудолюбивые люди :D Они пересечение 10 стран по списку ключевых слов - руками делают в Word!
Страшный сон для меня...
Заполнение локализации многие или не делают, или оставляют за скобками ASO.
Отдавать кучу денег профи я не готов, поэтому решил потратить полгода (сроки как всегда были провалены), чтобы написать свое решение - лучше, проще, и работающее совсем по-другому - так как я это вижу!
Активность моего аккаунта по пэт проектам
Активность Юлиных коммитов
Apple review
Когда вы планируете публикацию нового приложения в App Store - нужно отправить его на проверку как можно раньше, потому что все пойдет не по плану и вы будете что-то исправлять или объяснять команде Apple Review неделями.
Мне было очень тяжело отправлять незаконченную версию на проверку, но я знал, что это неизбежное зло! (Версия отправлена 24 апреля 2023)
На удивление macOS версию проверили очень быстро и без проблем. С iOS версией aso.dev застрял на параметрах privacy - указали больше чем собираем и долго пытались понять что от нас хочет команда и что вообще нужно исправить. Потом нас 5 раз заставили объяснить как работает приложение, какая бизнес модель и даже записать видео как работает приложение (15-минутное видео и куча исправленных багов в процессе).
А дальше настала “неприятная ситуация” - нас отправили на App Review Board так как мы используем Connect API и можем менять данные приложений пользователей. С 12 мая мы ждали проверки и после 6 звонков, проверки и одобрения от Apple Legal Team (юристы) и Apple App Review Board (совет собирается 1 раз в неделю и решает судьбы приложений, попавших к ним) "8 июня 2023" мы получили одобрение! 🚀🎉
Цели
Как я решил делать свою программу? У меня было несколько основных целей первой версии (я был очень амбициозен или глуп):
Создание 39 локализаций максимально быстро, а лучше одной кнопкой
Перевод "What's new" на все языки одной кнопкой
Все ключи по приложению без поиска и ручного заполнения списка слов по 59 странам (есть куда расти, но базис у нас уже есть)
Рекомендации ключевых слов (с сервера максимально автоматически, чтобы не искать и не думать как вообще можно улучшить свои ключевые слова)
Интерактивная табличка cross localization с метаданными и их валидацией
Работать без ограничений по количеству слов (привет всем тарифным сеткам ASO-программ)
Минимизировать походы в AppStore Connect
Функции
И так по пунктам зачем все это нужно и что из этого получилось.
При каждом релизе нужно заполнить "Что нового" на всех языках, или перевести любое другое поле, если что-то там изменилось. Небольшие стартапы или инди-разработчики не могут нанять переводчика или не хотят тратить время на перевод информации о приложении через какой-нибудь онлайн переводчик, копировать и вставлять 39 языков. Даже готовые переводы вставить в AppStore не так просто (а у нас можно!).
Чем больше локализаций - тем больше возможностей оптимизации приложения и больше пользователей.
- (Google Translate, DeepL или Chat GPT) - весело…
Переведи максимум в 30 символов - 43 меньше чем 30…
Сервисы ASO обычно достаточно хорошо работают по 10-20 странам и не заточены под работу с несколькими странами сразу - я пытался это решить новым подходом для отображения и тем что пользователю не надо добавлять слова. Сейчас в базе больше 300,000 слов для поиска и она постоянно растет - мы делаем 17 млн запросов в сутки, а база за 3 месяца весит около 1 ТБ.
Возможно, база не самая большая, но она получена через подсказки и поиск в iTunes и Apple Search Ads - поэтому достаточно релевантная!
Например, плеер meows.app можно найти по более чем 4,500 ключевых слов (RU)!
Рекомендации ключевых слов мы строим автоматически и показываем их в редакторе метаинформации с учетом знаний по популярности слов, топа в категории и сохраненных в список слов, постепенно улучшаем алгоритм.
Валидация cross localization, на мой взгляд самая крутая фишка - для США можно заполнить 10 стран, пересечения keywords между странами нежелательны. Мы показываем все дубликаты, не рекомендуемые слова и, конечно, рекомендации!
- Ключевые слова
Таблицы и графики по всем найденным ключевым словам по приложению. Можно смотреть все или по списку ключевых слов (как фильтр). Есть разные вкладки - по стране, по дате и по слову. Есть сортировки, фильтрации(в том числе сложные) и скрытие колонок.
- Приложения конкурентов
Для получения релевантных слов из приложений конкурентов, особенно актуально для новых приложений. Приложения из этого списка будут использоваться для получения рекомендаций по ключевым словам на вкладке “Конкуренты” в редакторе.
Список ключевых слов, их рейтинг (синий), популярность (красная) и подсказки. И все без ограничения по количеству.
- Топ (бесплатно)
Топ приложения по категории, типу девайса, и типу платежа, а также совсем недавно выкатили топ по ключевому слову.
- Шпион</a>
Ключевые слова любого приложения, по ссылке/id приложения или из топов, списка приложений конкурентов
Возможность быстро предоставить доступ к проекту, с возможностью точечных настроек каждого раздела, без выдачи прав в Apple (нужны большие компании для тестирования)
- Переключение страны iTunes (бесплатно)
Switcher - возможность переключить App Store на iOS и macOS для просмотра приложений, поиска, рейтингов из другого региона напрямую в App Store
- Выбор билда и публикация
Возможность быстро, в том числе с телефона выбрать билд и отправить на проверку
- Переводы и история с DeepL и OpenAi (Chat GPT) ключами
Мы добавили несколько сервисов переводов и их сортировку при работе с ними, так как тот же DeepL не все языки может перевести. Ключ используется пользовательский, хранится и используется только с клиента (так дешевле и безопаснее), но Apple решил на быстрой проверке - что мы нарушаем правила 3.1.1 и остановил нам весь процесс выпуска версий еще на две недели - мы убрали эту функцию на время апелляции, сейчас все работает, почти два месяца ждали решения…
После того как нам разрешили публикацию с использованием ключей DeepL и OpenAl приложение выкинули из стора в Китае из-за того, что AI сервисы у них запрещены, отключили для Китая все, что связано с OpenAI по региону стора, написали апелляцию - ждем снятия запрета для Китая.
Еще недели 2 занял перенос приложения с одного аккаунта разработчика на другой. Зависали на том, что после удаления всех бетта-тестировщиков - Apple какое-то время их все еще видел при запросе на перенос
Быстрые релизы
Чтобы решить проблемы с “зависанием” на проверках у Apple, мы делаем сборку dmg и сюрприз - Windows! .dmg получилось сделать довольно быстро. Но решение проблемы, почему у меня запускается, а у клиентов нет заняло приличное количество времени - начинающие macOS разработчики или кто еще столкнулся с распространением билдов впервые - гуглите “notarize”.
Windows
Мы используем Flutter - поэтому сделать рабочую версию под Windows заняло примерно два дня. Еще дня четыре я настраивал автоматическую сборку, так как локально все работало, а на CI\CD из-под Runner - падало. Позже я узнал что наш установщик определяется как потенциальный вирус. Чтобы решить проблему - надо купить Сертификат для подписи кода, который должен быть выпущен только в определенных сертифицированных центрах (от ~200$). А тот который мне нужен - стоит 450 в год…
Почему мне нужен дорогой сертификат? - я сэкономил кучу денег и собираю Windows в Azure, поэтому мне нужен “облачный” (HMS) сертификат. Тут вы скажите - “Где, блин экономия?! - он же дорогой” и будете правы, но я уже получил 5к$ на Azure по программе от Microsoft для стартапов (https://www.microsoft.com/en-us/startups)...
Microsoft для стартапов
Заявка оформляется очень легко и быстро.
Мы уже получили:
2500$ на OpenAI (GPT)
5000$ на Azure
15000 фунтов для покрытия комиссий в Stripe!
Именно поэтому наши платежи в .dmg и Windows сделаны через Stripe. Интеграция Stripe и Windows заняла кучу времени, так как все это было впервые, но я счастлив, что мы закончили эти задачи!
Техническая часть
Gitlab CI\CD, Kubernetes + Rancher, .Net core для бэка, Flutter для клиента, Astro.build для сайта, RabbitMQ для очередей, MongoDB - для мелких и сложных данных, ClickHouse для хранения позиций по ключевым словам.
MacOS и iOS уже в App Store, .dmg и Windows версии уже на сайте,
Android - можем сделать.
Web - полноценно его сделать невозможно по ограничениям безопасности (CORS для работы с Connect API мы обходить не хотим, потому что не передаем никакой приватной информации через свой сервер, в первую очередь ключи), не уверен, что будем делать урезанную версию - пиши свои комментарии на этот счет.
Планы:
редактор подписок (в работе)
редактор скриншотов (в работе) - перемещение - удаление - добавление скриншотов
редактирование скриншотов - создание самих скриншотов, рамки и локализация
редактор in app events
dashboard приложения, отчеты, подсказки
И очень много других идей
Начали мы проект на Бали, большую часть написали в Таиланде, выпустили первую версию из Казахстана, а доделали и запускаем маркетинг из Грузии…
Время запуска ~10 месяцев 🤦♂️
Скачать - https://aso.dev/download/
Спасибо за статью, интересно было почитать. Но не могу понять, а зачем нужен сторонний плеер для Apple Music на яблочных девайсах? Какие преимущества перед встроенным?
Могу представить что для других платформ это может быть юзабельно (например если в разных экосистемах сосуществуешь и по каким то причинам используешь Apple Music и хочешь видеть его на своих андроид/windows девайсах)
Подскажи, вот у меня есть приложение Секундомеров, оно локализовано на 6 языков, смогу ли я используя твое приложение в пару кликов его локализовать автоматически на все остальные языки и автоматически подобрать ключевые слова или это все придется делать ручками? (PS: не совсем понял из статьи как это работает)