ТЕКСТ: ДАНИЛ ЯКОВЛЕВ Хочу поделиться своей историей разработки программы. Хотя я давно пользуюсь Mac, идея создания программы пришла нескоро. Уже не помню как, но в декабре 2011 года я наткнулся на Apple Developer Program. Меня сразу же привлекло то, что я могу самостоятельно начать разработку программы всего за 100 долларов. В добавку это стало отличным поводом обновить макбук (на белые макбуки нельзя установить систему новее, чем Leopard).
Буквально в течение недели появился целый список идей о возможных разработках. Идеи возникали на пустом месте, спонтанно. Затем последовал заказ ноутбука (новая модель как раз вышла в конце ноября 2011) и регистрация в программе разработчиков. Наступила самая нелюбимая часть дела: ожидание. К счастью, я присоединился к Apple Developer Program уже через 3-4 дня, виной всему были выходные. А ноутбук пришел уже ближе к Новому году.
Как только запустил макбук, я сразу стал скачивать Xcode – программу для разработки под iOS. После открытия программы меня настигло огромное разочарование. Я смотрел в монитор, как баран на новые ворота – настолько непонятным казался интерфейс Xcode. Желание создавать что-либо моментально пропало. Только после первых дней новогодних праздников я открыл Xcode снова.
Разработка
Я не буду сейчас говорить, какую программу я выбрал и почему, потому что хочу рассказать именно о процессе разработки и о своих ощущениях, которые были бы одинаковыми вне зависимости от моего выбора. Всё дело в том, что я практически не имел дела с языками программирования (если только Лого и Pascal на факультативах информатики в школе). Но я не унывал, потому что точно так же я начинал создавать свой первый сайт. Мои навыки html и php до сих пор не так велики, но своей цели я достиг. Побродив по интернету, я нашел и скачал очень полезную книгу для начинающих разработчиков (Стефан Кочан «Программирование в Objective-C»), да простят меня борцы с пиратством. Последнее издание было только на английском, а перевод на русский старых изданий показался некачественным. В итоге я почувствовал огромную гордость за себя, когда осилил около 500 страниц английского текста, полного компьютерной терминологии. Кстати, после прочтения книги я совсем не «прозрел» и стал писать программу, а лишь понял, что из себя представляет язык Objective-C.
Еще немного поисков в интернете, и, о чудо, передо мной предстает stackoverflow.com (это крупное сообщество разработчиков, готовых в любую минуту помочь коллегам решить трудную задачу при написании программы). Если бы не этот сайт, не писал бы я сейчас свою историю успеха. Большую часть новогодних праздников я, полный энтузиазма, сидел с ноутбуком дома и открывал для себя всё новые и новые возможности Xcode. Он, наконец, поддался, и я понял, что всё, оказывается, не так уж сложно.
В январе 2012 года мне исполнилось 18, я был учеником 11 класса (спасибо, кстати, моим родителям за поддержку и решение проблем с регистрацией в Apple Developer Program). Поэтому сразу же после новогодних праздников, а в моем случае – каникул, в процесс разработки вмешалась учеба. Однако я быстро привык к этому, а мои приоритеты неуклонно двигались в сторону программирования.
Сначала были долгие, около нескольких дней, попытки разобраться с каждой возникающей на пути проблемой, будь то создание хоть какого-то начального интерфейса или простейшая смена окон при нажатии кнопки. Каждая маленькая победа приносила невероятное удовлетворение, заставляя радоваться практически из-за мелочей.
Через несколько месяцев, ближе к апрелю, «скелет» программы был готов. Наверняка была возможность ускорить процесс, но отсутствие опыта и желание устранить все возможные недостатки и ошибки существенно увеличило время разработки. Я взял паузу длиной в месяц – нужно было готовиться к всероссийской олимпиаде. В процессе подготовки папка «Документы» была по каким-то причинам удалена, а впоследствии очищена Корзина. К сожалению, вся программа лежала именно в этой папке. Я был глубоко удивлен, когда уже в начале мая я решил продолжить разработку и Xcode сообщил, что моего проекта не существует. Очень страшно было осознавать, что 4 месяца написания программы ушли коту под хвост. Через пару часов я вызволял файлы из пустой Корзины с помощью замысловатой программы (многие знают, но на заметку: после очищения корзины файлы каким-то образом еще сохраняются в памяти на некоторое время). К счастью, мне удалось восстановить большую их часть. Вздохнул с облегчением.
Казалось, уже можно скоро заканчивать, но основная часть работы только была впереди. Нужен был дизайн, а я человек совсем не творческий. Вдохновившись парой программ, решил сделать всё по минимуму. Никакой графики, только подходящая цветовая гамма.
Дальнейший рассказ требует сообщить о том, что я создавал будильник, который будет задавать вам вопросы, когда вы проснетесь.
Первоначальная версия названия – Question Alarm. В дальнейшем оно показалось мне недостаточно подходящим. Приложение Logos quiz принесло идею – Quiz Alarm. По моему мнению, коротко и ясно. До сих пор не знаю, о чем думают носители английского языка при встрече с моей программой.
Отличие этого будильника от подобных состоит в том, что кроме арифметических вопросов в программе есть и вопросы с картинками. Нужно было придумать вопросы и найти картинки. С картинками проблема – большинство сайтов продают их за деньги, а лицензии очень разнообразные и весьма не понятные, потому что больше говорится об их использовании в СМИ, чем в разработке софта. Я нашел практически бесплатный стоковый сайт и скачал оттуда более сотни подходящих картинок, которые, оказывается, не так уж и просто подобрать.
Как и любой будильник, мой должен был иметь приятные мелодии звонка. После тщательного выбора я выбрал 20 мелодий (из них мне до сих пор нравятся только две – Acoustic и Orchestral, увидите при знакомстве с программой), лучшее из доступного.
Ну и, конечно же, иконка. Идея появилась чуть ли не вместе с идеей о будильнике, но её создание я постоянно откладывал на потом. Нарисована была в фотошопе за десять минут, сам не ожидал, что она будет выглядеть достаточно прилично. А в иконке всего лишь знак вопроса, восклицательный знак, два круга, наложенных один на другой, и аккуратно подрисованные звонки.
Дело близилось к концу, я уже успел закончить школу. Для как можно большего охвата аудитории заказал переводы на несколько языков. Приводил программу в товарный вид, тестировал, устранял ошибки. Вдруг на одном сайте увидел сообщение о лимите в 20 мегабайт, а из-за картинок (в формате png, который так любит Apple) и мелодий программа еле укладывалась в 100! Решение – сократил количество мелодий до 12, сэкономил на качестве и картинок, и звуков. Около 18! И опять я вздохнул с облегчением. Позже, как выяснилось, лимит повысили до 50 МБ, но я решил ничего не менять.
И вот я отправляю на рассмотрение свою программу. Опять моя нелюбимая часть: ожидание. Оно было достаточно долгим, около полутора недель программа находилась в очереди на проверку. В один прекрасный день, в час ночи я получаю сообщение о том, что мою программу начали проверять. Через 2 часа она уже была в App Store. Это подвело конец всем, если так можно сказать, мучениям.
Мораль: создание программы – крайне интересное дело. Не важно, умеете вы это делать или нет, попробовать всегда стоит. Даже ради удивленных возгласов знакомых: «Да? Это действительно твоё имя в App Store? Как тебе это удалось?» На протяжении полугода я никому не рассказывал о том, чем я занимаюсь. И это того стоило. Несмотря на коммерческую составляющую, я бесконечно рад тому, что решил заняться разработкой. Надеюсь, что это не последняя моя программа.
Что же это за будильник?
Давно уже пора начать рассказывать о своей программе. Quiz Alarm – очень простой в использовании будильник. Достаточно установить 5 параметров для того, чтобы будильник сработал корректно. Видел некоторые отзывы к другим будильникам, есть жалобы на то, что он иногда не срабатывает. В моей программе, скорее всего, такого не встретится, потому что я отказался от использования различных уловок для расширения функционала, которые не приветствует Apple.
А вот как вам придется отвечать на вопросы:
Хочу заметить, что вы можете изменить типы вопросов и сложность вопросов.
Легкие арифметические вопросы – это примеры только на сложение и вычитание. К средним и сложным добавляется умножение и деление соответственно. Что касается вопросов с картинками, легкие вопросы – что-то вроде теста с одним правильным вариантом ответа. Средние – ответ будет сразу после вопроса, но часть букв скрыта. А вот на сложные вопросы придется отвечать самому.
Также можно поменять и количество вопросов, которые вам будут заданы. Советую ставить побольше, потому что 1-2 вопросов мало для того, чтобы заставить еще спящий мозг работать. Проверено на себе, будильник достаточно часто помогает проснуться (или, во всяком случае, привести к состоянию бодрости).
Конечно же, для предотвращения тупиковых ситуаций существует возможность получить подсказку. Придется только немного подождать, поэтому не пугайтесь при возникновении окна с обратным отсчетом.
Вот таким получился мой дебют в App Store.
Затем вышла версия для iPad, из-за картинок размер программы подобрался к 50 мегабайтам. Надеюсь, что это не станет существенной преградой для покупателей. Также улучшено качество мелодий и картинок. В планах создание бесплатной версии с ограничением некоторых функций.
Рад выслушать все ваши пожелания и ответить на ваши вопросы.
iPhone + iPad: $0.99 [iTunes link]
60 комментариев
Форум →Хех. На белом макбуке Lion стоит. 2008 год
@KAIL_one, Прочитал статью. Очень понравилась история. Тоже, как Вы, не знаю языка программирования. Хотел что-то вроде Donkey для себя сделать, проверить себя. Но так и не дошли руки)
А администрация сайта знает, что “касперский” не дает зайти на сайт? Пишет, что этот сайт угрожает компьютеру.
@Cher, на что ругается?
@Артур Малосиев, Подтверждаю, тоже самое время от времени бывает, но у меня не Касперский , а ESET. Что пишет не вспомню, но в браузере блокируется страница и все.
@Артур Малосиев, Доктор веб также блокирует.
@Артур Малосиев, yandex.ru тоже ругается http://db.tt/RBnOaHjH
@IVAn Dealer, это Софос нас не проиндексировал заново :(
@Артур Малосиев, Предупреждение в новом яндекс.бразуере
По нашим данным, на страницах сайта был размещён вредоносный программный код. Это могло произойти как по желанию владельцев сайта, так и без их ведома — в результате действий злоумышленников.
Более подробную информацию об угрозе или безопасную копию сайта можно посмотреть на странице с полными данными о заражении.
http://yandex.ru/infected?l10n=en&url=http%3A%2F%2Fwww.iphones.ru%2FiNotes%2F263600
стандартный будильник можно отсрочить на 10 минут кнопкой power, а что произойдет, если нажать её здесь?
и вопрос по теме: реально ли уменьшить отсрочку в стандартном будильнике?
@ifreto, Чтобы с наибольшей вероятностью довести пользователя до ответов на вопросы, будильник будет звенеть каждую минуту до тех пор, пока пользователь не откроет программу.
@dyakovlev, вот это хорошо.
@ifreto, Да, только вот если оставить устройство где-нибудь в одиночестве, оно будет играть мелодию постоянно (до тех пор, пока устройство не разрядится, например)
@dyakovlev, кстати, ещё вопрос, чем отличается “Музыка” от “Звук”?
и было бы неплохо реализовать прослушивание песни из медиатеки, перед тем как ставить её на будильник.
@ifreto, @ifreto, По правилам, которые установлены для разработчиков, звук уведомления должен быть определенного формата и не более 30 секунд длиной. Таким образом, приходится разделять мелодии, которые Вы слышите до открытия программы и после.
Другими словами, Вы просыпаетесь от мелодии “Звук”, а на вопросы отвечаете уже с мелодией “Музыка”. К сожалению, нельзя установить песню из медиатеки в качестве мелодии уведомления.
Спасибо, подумаю над этим.
@dyakovlev, всё, разобрался – и тут же просьба: возможность не ставить ничего для “Музыка”, не хочется весь дом будить пока я соображаю сколько будет 65 – 0 =D
ах да, в арифметических задачах сразу бы цифровую клавиатуру показывать.
@ifreto, У цифровой клавиатуры, насколько я знаю, нет кнопки “Готово”. Хотя, возможно, что я ошибаюсь.
Я хотел сделать это дополнительным стимулом к ответу на вопросы. Иначе просто можно закрыть программу и спать дальше :)
65-0 – одна из проблем, которую я забыл исправить в обновлении. Считайте, с утра Ваш день начинается удачно :)
@dyakovlev, стимул хороший, согласен, но было бы неплохо регулировать звук у этого стимула :)
спасибо за ответы:)
@ifreto, что заметил, у меня iPhone продлевает не на 10 минут а на 9 оО
@K.Vasiliev, Оо я уже думал, я свихнулся. а там реально 9 минут, а не 10 =D
хммм… просто интересно, а сколько автор денег получает, скажем, за неделю?
@Alexanderrrr, да, тоже очень интересно, как с продажами обстоят дела? Это ведь самая главная часть любой dev-story =)
@Splash.Dmg, что касается продаж, то с этим дела не очень хорошо :)
Очень тяжело раскрутить приложение без вложений, эта статья, надеюсь, поможет исправить ситуацию.
iPhone / iPad. Новости и советы
Сайт может угрожать безопасности вашего компьютера или мобильного устройства
Новости и обзоры iPhone. Мелодии, картинки, программы. Советы пользователей и обсуждения на форуме.
iPhones.ru
яндекс пишет
А интересно, есть будильник с запуском радио? Конечно на iPhone. А на вопросы отвечать не хочу. Тем более для школьников. И ещё более доя взрослых. ” Доброе утро ” услышать приятно. Мягкую музыку. Новости. Так что там с интернет радио?
Погуглил и нашёл. За 2 бакса. А бесплатный?
@alefut, Alarm Clock Radio Free
парняга красавец! так держать! идея, не нова, но за соотечественника порадуюсь! из пожеланий-привести внешний вид в соответствии с iOS. больше похоже, что под Винду Фон писалось. хотя бы все острые углы убрать и справку с настройками вниз в виде кнопок внизу, как у всех айос софтин. имхо конечно же =)
вообщем Good Luck =)
@NightPeople, не надо. Дизайн впорядке. Дело вкуса конечно, но главное, что все аккуратно.
Жестокий Будильник :)
Посмотрев видео, стало понятно, что пора уже выпускать обновление для iPhone5 :)
iPhone 4, последняя ОС. Если включен режим “не беспокоить”, то будильник не звонит:(
А так программа хорошая. И еще. При создании будильника просит ввести дни повтора, даже если они не нужны. Помогает зайти в “Повторять” и выйти обратно.
@oh_sololo, Этот режим и предполагает “не беспокоить” :) Просто в этом режиме блокируются все уведомления, соответственно, будильник не может работать. К слову, отправка push-уведомления – единственная возможность для работы будильника. Остальные Apple не принимает.
Достаточно всего лишь выбрать “не повторять”.
@dyakovlev, это печально. Потому что я не хочу что бы меня беспокоил кто-то до 9 утра, а вставать надо в 8. Звук-то можно хотя бы воспроизводить? Который что бы отключить, надо все равно включить экран и увидеть пуш уведомление.
@oh_sololo, Не уверен, что сработает, но попробуйте поставить будильник и, не выходя из программы, нажать кнопку Lock (та, что сверху). Возможно, что будильник обойдется без push-уведомления.
@dyakovlev, по ходу не помогло. Да. Не помогло.
И еще. Название будильника. Можно сделать так что бы его необязательно было вводить? Просто при пустом поле он будет самоназываться “будильник”:) а то лишие телодвижения какие-то бессмысленные.
@oh_sololo, Тогда дела плохи. Сейчас проверю ещё один вариант.
Не обещаю, что это точно будет сделано, но я учту, спасибо.
Теперь уже вопрос от меня :) Когда ставите время, показывает AM/PM или нет?
@dyakovlev, да, показывает. Кстати это очень непривычно, везде же 24-часовое время.
Я нашел способ как обойти вашу хитрую программу. Вырубить ее к фигам из панели многозадачности)) опять просыпать буду…
@oh_sololo, Это, видимо, из-за проблем с совместимостью с iOS 6. По идее, программа должна автоматически выбирать, какой формат используется. В предыдущих версиях это работает.
Такие методы не исключены :) Увы, но эти проблемы не решить с помощью кода программы.
Кстати, iOS 6 сильно огорчила меня режимом “не беспокоить”. Действительно, будильник ни за что не хочет работать. Единственный способ – оставить программу включенной, отключить автоблокировку и поставить яркость на минимум. Но заряд всё равно сильно уменьшится за ночь.
@dyakovlev, ладно. Разберемся.
А так программа хорошая. И графика впорядке. Не слушайте ебаных Микеланджело. Главное что все со вкусом. А с центром уведомлений я договорюсь;)
@dyakovlev, да. Она выбирает автоматом между AM и PM. Сам формат непривычен. Привычнее 24 часовой
@oh_sololo, Я прекрасно понимаю, что кому-то нравится дизайн, а кому-то нет. И я рад, что дизайн в итоге получился намного лучше, чем я поначалу задумывал.
Я имел в виду, что программа автоматически выбирает, 12-часовой формат должен быть или нет. То есть в России на самом деле должен показывать без AM/PM, а в США – наоборот.
Тоже решил заняться программированием на Objective-C, и тоже по книге С. Кочана “Программирование на Objective-C 2.0”. Знатная книженция, и для новичка в программировании – идеальная вещь.
Спасибо автору за статью, всегда приятно видеть, как к человеку приходит успех.
А то, что продажи не очень – так это понятно, раскрутка приложения вообще дело хитрое. Самое главное – опыт. Постепенно, с приходом уверенного владения матчастью, можно браться за программы под заказ – это достаточно неплохой источник дохода.
Кстати, один мой коллега по работе долгое время занимался разработкой и продажей сайтов на Джумле (Jommla), не понимая ничего вообще в веб-программировании. И умудрялся получать за это неплохие деньги. Такие вот дела))
Промо-коды!
7Y3XA7E9KEAE
4YYT6XWFEMKM
6RTPPJP3HAWF
YKYXYL997ART
44J7ME7RRNHL
NLPXMRRLKKFY
YEYW93FA7PYK
EHKX63NR9FAT
T77EM4WEFFHN
RHETJRTPL3YJ
@dyakovlev, Взял “NLPXMRRLKKFY”. Спасибо. Опробуем.
@dyakovlev, спасибо!
забрал YEYW93FA7PYK
@K.Vasiliev, упс не тот скопировал… забрал EHKX63NR9FAT
@dyakovlev, T77EM4WEFFHN, Спасибо!
@dyakovlev, спасибо , начал с конца, а схватил второй в итоге “4YYT6XWFEMKM” спасибо еще раз пробуем)
С построением предложений, конечно, беда у автора) Ну и, как мне кажется, нет ничего особенного в том, чтобы в 18 заняться разработкой под iOS)
А дизайн хорош, как ни странно.
“После открытия программы Xcode меня настигло огромное разочарование.”
Xcode – ом люди пользуются только для рисования storyboard-ов, а для непосредственно написания кода от него столько же пользы, сколько от текстового редактора. Все продвинутые программеры на Objective C используют AppCode.
@greeny, Не пользовался AppCode, но Xcode показался мне достаточно удобным – есть автозаполнение, комментируются ошибки. В этом плане не соглашусь с тем, что он по функциональности, как текстовый редактор.
Да и до продвинутого программера мне очень далеко :)
Советую все-таки попробовать AppCode, автодополнение там гораздо лучше, будет работать даже если Вы набираете только первые буквы слов названия (например вместо rootViewController – rvc). Кроме автодополнения там очень много других полезных фич.
” Меня сразу же привлекло то, что я могу самостоятельно начать разработку программы всего за 100 долларов”
Ахренеть!!!!! Всего за 100 баксов можно самостоятельно начать разработку!!! Покажите, где еще можно так дешево начать разрабатывать софт!
Прочитав вашу историю, очень зацепило создание собственной программы, так цепляюще всё написанно, что прям у самого руки зачесались :) всех благ вам в будущем!
Без проверки с этой программкой запросто проспать.
Установил я будильник.
Телефон на беззвучном режиме. Экран потушен и заблокирован.
Будильник срабатывает. Звука нет. Один раз дребезжит вибро. И всё! После разблокировки да, играет мелодия.
Все молчат о дизайне проги (не хотят обидеть школьника). Ну и я промолчу…
Автор — молодец.
Сам давно мечтаю создать что-нибудь на iOS, только я, увы, не кодер, а дизайнер. Как насчет того, чтобы работать вместе? Если заинтересовало, то пиши: [email protected].
Я твой ровесник, кстати.
Хотя, напиши мне в любом случае. Есть идеи.
Друзья, а одесситов среди Вас нет ли случайно?
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Пропадают заметки на iPhone, что делать?
Почему iPhone не видит Lightning-флешку
Настройка громкости iPhone в режиме Не беспокоить
Почему в некоторых приложениях не работает микрофон
Как удалить загруженные на iPhone рингтоны
Как увеличить размер шрифта на iPhone
Как создать стереопару из двух HomePod
Почему iPhone греется возле кнопки Home