Добрый день. Я разработчик программы SayPlay. Для начала представлюсь: меня зовут Ринат, я из Екатеринбурга, мне 26 лет. Хочу поведать вам историю о том, как пришла идея данного приложения и что из этого вышло.
Идея
Я люблю слушать музыку в наушниках, когда занимаюсь какими-либо делами, будь то мытье посуды, катание на велосипеде или даже просто прогулка. Часто возникает желание не очень любимую композицию пропустить или перемотать вперед (особенно касается электронных треков со вступлениями по 1,5 минуты). Конечно, в этих случаях телефон доставать не обязательно, можно переключить композицию через кнопки управления на наушниках (если они конечно есть). Но что если у вас руки мокрые (к примеру, моете посуду), или вы прогуливаетесь в мороз и руки спрятаны в варежки, ну или просто сидите в подвале со связанными руками :). Вот тут голосовое управление воспроизведением как нельзя кстати.
Это бесплатно. Прочитайте правила.
Разработка
Когда я приступил к непосредственному созданию приложения, то решил записывать основные моменты разработки – т.е. вести своеобразный дневник. Именно в таком ключе, последовательно, я расскажу о ходе разработки.
Над приложением я начал работать 1 апреля. Весь базовый функционал, а именно проигрывание музыки и распознавание голосовых команд, был написан за один вечер. На следующий день был реализован режим работы приложения в бэкграунде, т.е. была обеспечена работа приложения на заблокированном телефоне. Для меня это было важно, т.к. вряд ли кому-нибудь понравилось бы то, что для работы приложения экран телефона должен быть непогашенным, что изрядно бы садило батарею. К слову, в App Store есть программа tipSkip, в которой управление воспроизведением музыкой реализовано постукиваниями по телефону, и, чтобы это работало, телефон нельзя блокировать.
С 3 по 6 апреля внимание было уделено внешнему оформлению приложения, был добавлен ночной режим, добавлены настройки. Параллельно думал над идеей для иконки. О том, как создавалась иконка вы можете прочитать в соответствующем разделе этой статьи.
7 апреля в настройках была добавлена возможность смены режима работы аудио сессии – с микшированием остальных источников звука и без микширования. При включенном микшировании вы можете играть в какую-нибудь игру со звуком и слушать музыку в плеере одновременно. Однако, микширование не позволяет управлять воспроизведением музыкой через кнопки на наушниках.
Для работы с медиатекой (с музыкой, хранящейся на телефоне) я первоначально использовал класс MPMediaPickerController. Им легко пользоваться: пара строк кода, и в вашем приложении появляется возможность выбора композиций из вашей медиатеки. Но меня он совершенно не устраивал по следующим причинам: выбор не сохранялся между запусками приложения, нельзя отменить выбор случайно выбранных композиций, нельзя выбрать сразу весь альбом, исполнителя или жанр. 8 – 14 апреля велась работа над созданием собственного mediaPiker, о котором вы можете подробнее прочитать в разделе этой статьи об отличительных возможностях приложения.
15 апреля была встроена аналитика – Google Analytics и Crashlytics.
И, наконец, 23 апреля я отправил приложение на review Apple. В магазине App Store приложение появилось 5 мая.
Отличительные особенности приложения
Самая важная отличительная особенность приложения – это распознавание голосовых команд на русском языке. Голосовые команды распознаются прямо на телефоне, подключение к интернет не требуется. На данный момент работают следующие команды (замечания и предложения более уместных на ваш взгляд команд крайне приветствуются):
- Начать играть
- Поставить на паузу
- Следующая композиция
- Предыдущая композиция
- Увеличить громкость
- Уменьшить громкость
- Перемотать вперёд
- Отмотать назад
- Случайный порядок
- Воспроизводить по порядку
- Повторять музыку
- Отключить повторение
- Играть всю музыку
- Мне нравится
Вы можете посмотреть, как работают голосовые команды в следующем коротком видеоролике:
Если вам нравится проигрываемая композиция, а возможности достать телефон нет, скажите “мне нравится”. Текущий трек будет добавлен в ваш список любимых композиций.
Я понимаю, что распознавание голосовых команд неидеально и иногда возможны ложные срабатывания. По этой причине в настройках была добавлена возможность выборочного отключения/включения отдельных голосовых команд. Скажем, если вы не хотите, чтобы управление громкостью осуществлялось голосовыми командами, вы можете отключить конкретно только их. Вы также можете настроить шаг перемотки композиции (в секундах) и шаг изменения громкости (в процентах).
Вторая важнейшая особенность плеера – возможность его работы в бэкграунде: он продолжает играть музыку и распознавать голосовые команды на заблокированном телефоне.
Я отказался от использования стандартного MPMediaPickerController для выбора композиций. Вместо него был написан собственный, на мой взгляд более удобный, который позволяет:
- Выбирать сразу всю коллекцию (плейлист, альбом и т.д.), в том числе с возможностью предварительного перемешивания изначального порядка
- Снимать выделение сразу со всей коллекции
- Добавлять (отменять выбор) композиции по отдельности
- Очищать текущий список воспроизведения
- Сохранять состояние выбора композиций между запусками приложения
Добавленные композиции составят ваш список для воспроизведения. Этот список (в приложении он называется “Плейлист”) обладает следующими возможностями:
- Воспроизводимая композиция выделяется оранжевым цветом фона
- Автоматически прокручивает таблицу до текущей воспроизводимой композиции
- Позволяет удалять композиции из списка для воспроизведения (жест “свайп влево”)
- Может зациклить воспроизведение плейлиста (repeat)
- Перемешивает последовательность композиций в плейлисте с возможностью вернуться к первоначальной последовательности
Плеер может работать в двух режимах: с микшированием звука с остальными источниками и без микширования (обычный режим). При включенном микшировании вы можете играть в какую-нибудь игру со звуком и слушать музыку в плеере. Режим переключается в настройках.
К второстепенным особенностям приложения можно отнести автоматический переход между ночным и дневным режимами в зависимости от времени суток.
Как создавалась иконка
Я никогда не работал с векторными редакторами графики, но зато хорошо разбираюсь в программе SolidWorks (по профессии я инженер). В ней и решил нарисовать иконку.
Сначала думал над идеей для иконки – рисовал наброски карандашом на листочке:
Последняя идея мне понравилась сразу и я перешел к воплощению задумки в SolidWorks:
Далее созданную деталь я перевел в чертеж, залил контур черным цветом и экспортировал как картинку:
Ну а с готовой растровой картинкой уже достаточно легко работать в Photoshop, что я и сделал, “поиграв” с размером иконки и цветом фона.
Дальнейшее развитие
В первой версии приложения не удалось реализовать весь задуманный функционал в полной мере. В последующих обновлениях я сосредоточусь на добавлении следующих возможностей:
- Эквалайзер
- Распознавание голосовых команд на английском языке
- Скробблинг композиций на lastfm
Продвижение и затраты
Кроме 99$ за аккаунт разработчика, на создание приложения я ничего не потратил: программировал, рисовал графику самостоятельно. Иногда слышу такой вопрос “А сколько ты времени затратил на написание приложения? Если это время перевести в деньги – то разве это не будет затратой?” Нет, не будет. Это мое свободное время, которое я мог бы “убить” совершенно пустыми занятиями, вроде просмотров сериалов, фильмов и т.д.
Приложение вышло в App Store совсем недавно, продвижения пока не было совершенно никакого. Эта статья – первая.
Трудности
Проблема №1 для меня на данный момент – это скробблинг песен в Last.fm, но не с технической точки зрения, а с юридической: использовать их API можно только для некоммерческих приложений, т.е. ваше приложение не должно извлекать какую-либо прибыль (за счет продаж, встроенной рекламы и т.д.) Мое приложение – коммерческое, и для использования API Last.fm необходимо написать письмо в их службу поддержки с просьбой расширить лицензию для использования в коммерческом приложении. Такое письмо было написано, но ответа от них пока не поступило.
Промокоды
Заметил, что в комментариях часто пишут: “Зачем нужны промокоды?” Итак, промокоды позволяют установить приложение бесплатно (если приложение платное). Для создания промокодов я использую приложение Tokens – оно упрощает генерацию, распространение и отслеживание промокодов:
Промокоды:
http://tokn.co/nm8mf9ec
http://tokn.co/0asxyqhx
http://tokn.co/k7k48kuw
http://tokn.co/qbjsmxw2
http://tokn.co/497jzyr9
http://tokn.co/35yn29bv
http://tokn.co/dtghhqxp
http://tokn.co/srrdkkgk
http://tokn.co/a365xxsj
http://tokn.co/wkt9gyc7
http://tokn.co/6u3bg4gs
http://tokn.co/9vn7vqsb
http://tokn.co/yeagdbcu
http://tokn.co/cch67fyz
http://tokn.co/pq6f4y83
http://tokn.co/rnde64tn
http://tokn.co/ejfvuq7a
http://tokn.co/zp5uwk4h
http://tokn.co/t4e3af66
http://tokn.co/8x4rpyjt
http://tokn.co/fxmtp44g
http://tokn.co/bmdxch6r
http://tokn.co/hax4ybjq
http://tokn.co/23wp9fem
http://tokn.co/7k2jm3hd
http://tokn.co/d89nz4kf
http://tokn.co/swvqeqw5
http://tokn.co/gdpdhbre
http://tokn.co/5huwbfb4
http://tokn.co/uyz9x3x8
iPhone: 59 руб. [Скачать в App Store]
Абидуллин Ринат
25 комментариев
Форум →Только что скачал по промокоду, первые впечатления – супер! Не хватало такого приложения :)
Если бы, в дальнейшем, сделали такое приложение для Apple Watch, чтобы можно было всю музыку так в доме переключать – было бы вообще шикарно :)
@Artemitto, Поддержка Apple Watch обязательно будет.
спасибо
забрал http://tokn.co/yeagdbcu
только сегодня утром на пробежке, бегу, и думаю.. от черт.. так не хочется останавливаться менять плейлист, вот бы была возможность голосом поменять … спсибо разработчику… потестим завтра утром :)
Отличное приложение! Спасибо за промокод)
Отличное решение для обычных наушников, которые лишены пульта, как на стандартной гарнитуре. Теперь телефон можно вообще не трогать.
Команды можно попробовать сократить до минимума слов, для удобства.
1) Начать играть – Play
2) Поставить на паузу – Пауза
3) Следующая композиция – Дальше
4) Предыдущая композиция – Назад
5) Увеличить громкость – Громче
6) Уменьшить громкость – Тише
7) Перемотать вперёд – Перемотать
8) Отмотать назад – Отмотать
9) Случайный порядок – Случайно
10) Воспроизводить по порядку – По порядку
11) Повторять музыку – Повторять
12) Отключить повторение – Без повтора
13) Играть всю музыку – Играть всё
14) Мне нравится
@PaxweL, команды из одного слова часто ложно спабатывают, из двух слов – ложных срабатываеий на порядок меньше. По этой причине я решил оставить команды из двух слов.
@RinatAB, почему-то так и подумал) для воспроизведения, например, достаточно произнести “Начать”.
Насчет промо, сказка какая-то. Статья только появилась (пишу позже), уже разобрано. Как то быстро. ))
Интересно, батарею быстро будет разряжать?
@Alex, нагружает телефон практически как обычный плеер – батарея держится долго
Зкщпкуыышму Ршгыу!
а команды в идеале надо делать обучаемыми
тогда можно и под себя настроить, и работать будет хоть в Китае
Автор молодец) быстро собрал)
Ситуация: слушаю музыку через джек провод в машине, на нем нет микрофона. Услышит ли приложение команду?
@CurlyBoy, Да, в этом случае команды принимает микрофон на iPhone. Только учтите, что команды должны звучать громче музыки )
Приложению нужна бесплатная ограниченная версия. Промокоды давно разобраны, а покупать не испытав на деле – неправильно.
@adamob, У меня возникала мысль сделать приложение бесплатным с ознакомительным запасов, скажем, в 100 голосовых команд и с одной покупкой внутри приложения для разблокировки голосовых команд
@RinatAB, отличная работа, земляк! :) Приятно видеть, что в родном Екатеринбурге есть такие таланты. Жаль, что промо-коды разобрали, но думаю, что не проблема поблагодарить копеечкой.
В самой статье хотел увидеть ещё момент опыта самого автора в разработке: что знал и на каком уровне, работал ли раньше с приложениями под iOS и подобной графикой. Очень быстрый темп разработки, поэтому вангую, что опыт был, но очень уж интересно услышать факты.) Статья не только познавательна, но и вдохновляющая, спасибо!
Давно хочу сам сделать свои приложения, задумки есть, но отсутствия нужных знаний становятся камнем преткновения, вот и спрашиваю, про опыт в разработке.)
@JohnDinglu, По опыту разработки: начал изучение языка Objective-C примерно в 2013 году – читал книги, статьи, смотрел видеоуроки, компилировал примеры и старался выполнять задания из книг. В августе 2014 года решил, что пора бы начать создавать собственное приложение. Первое приложение писал 8 месяцев – это была программа для запоминания английских слов. SayPlay – второе приложение, при его создании я опирался на опыт, полученный от первого приложения.
Из хороших видеоуроков могу посоветовать эти: http://vk.com/iosdevcourse
Посмотрев их и выполнив предлагаемые задания, у вас будет более чем достаточный багаж знаний для создания собственных приложений )
По опыту разработки: начал изучение языка Objective-C примерно в 2013 году – читал книги, статьи, смотрел видеоуроки, компилировал примеры и старался выполнять задания из книг. В августе 2014 года решил, что пора бы начать создавать собственное приложение. Первое приложение писал 8 месяцев – это была программа для запоминания английских слов. SayPlay – второе приложение, при его создании я опирался на опыт, полученный от первого приложения.
Из хороших видеоуроков могу посоветовать эти: http://vk.com/iosdevcourse
Посмотрев их и выполнив предлагаемые задания, у вас будет более чем достаточный багаж знаний для создания собственных приложений )
@RinatAB, планируете ли выпускать андроид версию приложения? на моем Samsung Note 4 очень не хватает подобного приложения
Щикарно)) скачаю чуть позже, скажи те, а ландшафтный режим у нее есть? Я бы в машине пользовался, было бы прекрасно, сейчас пользуюсь CarTunes но там просто свайпы, но дизайн очень классный (для меня это по не понятным причинам важный критерий)
Щикарно)) скачаю чуть позже, скажите, а ландшафтный режим у нее есть? Я бы в машине пользовался, было бы прекрасно, сейчас пользуюсь CarTunes но там просто свайпы, но дизайн очень классный (для меня это, по не понятным причинам, важный критерий)
@ZeR0Co_0l.., ландшафтного режима нет )
@RinatAB, что ж, тогда думаю вам стоит этим заняться если есть время). Ландшафтный режим будет хорошим дополнением. Надеюсь все получится так как вы хотели)
@RinatAB, планируете ли выпускать андроид версию приложения? на моем Samsung Note 4 очень не хватает подобного приложения
Добрый день!А для андройда есть такое приложение?
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Как проверить залочен ли iPhone на оператора?
Как обновить прошивку беспроводной гарнитуры Beats?
Как на iPhone включать беззвучный режим, если сломался физический переключатель
Что делать: macOS требует ввести пароль Apple ID, но нет окна ввода?
Как на iPad активировать камеру при помощи Apple Pencil
Пропала строка состояния на iPhone, как вернуть
Как отключить автоматическое переключение AirPods на Mac
Как включить автоматическое воспроизведение музыки в AirPods