[Dev Story] История создания приложения FoodDiary

12

FoodDiary

Нам пишет Ринат Абидуллин

Я понимаю, что подобных историй от разработчиков написано много. Но каждая уникальна по-своему, и, возможно, именно эта станет еще одной каплей в чаше вашего вдохновения.

Идея

В один прекрасный день я задумался: “Как много я съедаю за день?”. Просто у меня недобор веса, и мне крайне сложно его поднять. Вычислил необходимое количество калорий для набора массы, вышло 3500 ккал в день. Далее необходимо было каждый день рассчитывать калории и БЖУ съеденной пищи. Сначала я стал искать готовые решения для ведения дневника питания на телефоне. Установил и испытал порядка десяти приложений, но не одно из них мне не подошло по ряду требований, которых-то совсем немного:

  • Настраиваемые напоминания о необходимости внесения съеденной пищи в дневник
  • Хорошая база продуктов
  • Возможность добавлять свои продукты
  • Произвольное количество времен приема пищи, а не только завтрак, обед и ужин
  • Просмотр КБЖУ за день, за конкретное время приема пищи, а также возможность посмотреть на вклад одного продукта в КБЖУ

Было решено написать собственное решение, удовлетворяющее вышеперечисленным требованиям.

Описание приложения

Итак, что из себя представляет приложение? Это дневник питания, который высчитывает КБЖУ (калории, белки, жиры и углеводы), употребленные вами с приемами пищи. Давайте на примере рассмотрим, как происходит взаимодействие пользователя с приложением.

Первое, что необходимо сделать, — это добавить время приема пищи. Например, вы позавтракали в 7:10 утра. Для этого нажимаем на “+” и устанавливаем желаемое время:

001

Далее выбираем съеденные продукты нажатием на кнопку “Добавить съеденный продукт”. Их можно найти, перемещаясь по категориям или, что, несомненно, удобнее, воспользовавшись поиском. Как только вы нашли искомый продукт, нажмите на него и введите количество съеденной порции:

002

Если вы не нашли нужный продукт, его можно добавить самостоятельно, перейдя в категорию “Ваши продукты”:

003

Обратите внимание, что практически для всех продуктов вам предлагается указать размер съеденной порции в граммах. Это не всегда бывает удобно. Представьте, вы утром съели банан, заносите его в дневник и указываете размер порции, например, в 150 грамм, хотя удобнее было бы указать размер порции в штуках. Выход есть — нужно добавить свой продукт в базу приложения под таким же именем и указать меру измерения порции в штуках:

004

Почему, спросите вы, нельзя сразу ввести выбор фруктов и овощей поштучно? Это связано с тем, что у меня нет уверенности, сколько весят продукты в разных странах. У нас бананы средние и весят порядка 150 грамм (с кожурой), а где-нибудь в Африке бананы уже покрупнее.

Ввели все съеденные продукты? Теперь вы можете посмотреть, сколько калорий и БЖУ вы употребили в определенное время, а на верхней панели — в течение дня. Чтобы посмотреть на вклад определенного продукта в КБЖУ, выполните по нему жест “свайп вправо”:

005

Забыть занести прием пищи в дневник очень легко, поэтому в приложении есть настраиваемые напоминания. Их можно ввести столько, сколько вам необходимо:

006

Дизайн

Я не дизайнер, поэтому и дизайна приложения, скорее всего, нет. Просто подбираю цвета, иконки, шрифты и т. д. до тех пор, пока не проходит резь в глазах. Как только она прошла — всё, дизайн готов. Интерфейс программы тоже никак не разрабатывался, я просто старался сделать так, чтобы приложением было удобно пользоваться (здесь сыграла моя любовь к минимализму и простоте).

Разработка

Приложение несложное, на его разработку ушел месяц (пару часов после работы в будние дни и часов по 8 в выходные). Это не первое мое приложение, опыт уже есть. Разработка шла на языке Objective-C, хотя я уже начал осваивать Swift, но пока все же привычнее писать на старичке.

Создавая новый проект в Xcode, я сразу же добавляю скрипт, который автоматически увеличивает номер сборки при каждом компилировании приложения (Build Phases -> Run Script):

#!/bin/bash
bN=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
bN=$(expr $bN + 1)
bN=$(printf "%d" $bN)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $bN" "$INFOPLIST_FILE"

В разработке я использую CocoaPods для работы с чужими библиотеками, хотя первое время (когда только делал первые шаги в разработке под iOS) просто копировал файлы библиотек в проект Xcode. Пользоваться CocoaPods легко: https://guides.cocoapods.org.

Хочу поделиться с вами библиотеками, которые часто использую в своих проектах:

https://github.com/ccgus/fmdb
Обертка для работы с базой данных SQLite

https://github.com/ViccAlexander/Chameleon
Легкая и вместе с тем мощная библиотека для работы с цветом для iOS (Objective-C & Swift).

https://github.com/SnapKit/Masonry
Обертка для AutoLayout с приятным и лаконичным синтаксисом.

https://github.com/AFNetworking/AFNetworking
Идеальная библиотека для работы с сетевыми запросами для iOS, OS X, watchOS и tvOS.

https://github.com/PrideChung/FontAwesomeKit
Библиотека с иконочными шрифтами для iOS. Поддерживает Font-Awesome, Foundation icons, Zocial и ionicons.

https://github.com/Friend-LGA/LGAlertView
Гибко настраиваемая реализация UIAlertViewController, UIAlertView и UIActionSheet.

https://github.com/UrbanApps/UAObfuscatedString
Категория для NSString, позволяющая скрыть строки в скомпилированном бинарном файле приложения.

https://github.com/MortimerGoro/MGSwipeTableCell
Подкласс UITableViewCell создания ячеек таблицы со свайп-кнопками.

https://github.com/SVProgressHUD/SVProgressHUD
Индикатор загрузки для iOS и tvOS.

https://github.com/robotmedia/RMStore
Библиотека для работы со встроенными покупками (In-App Purchases)

Практически все вышеперечисленные библиотеки были использованы при разработке данного приложения.

Для отслеживания падений приложения я встроил Crashlytics (сервис бесплатный). Также этот сервис позволяет организовать beta-тестирование приложения. Реализовано все крайне удобно.

007

Для сбора статистики решил попробовать решение от Яндекса: AppMetrika. AppMetrica — это бесплатный инструмент, который в реальном времени собирает информацию об источниках аудитории, анализирует её поведение в приложении и фиксирует ошибки, с которыми сталкиваются ваши пользователи.

008

Немного про мой опыт разработки: начал изучение языка Objective-C примерно в 2013 году – читал книги, статьи, смотрел видеоуроки, компилировал примеры и старался выполнять задания из книг. В августе 2014 года решил, что пора бы начать создавать собственное приложение. Первое приложение писал 8 месяцев – это была программа для запоминания английских слов. Второе приложение — музыкальный плеер с голосовым управлением. Из хороших видеоуроков могу посоветовать эти: http://vk.com/iosdevcourse. Посмотрев их и выполнив предлагаемые задания, у вас будет более чем достаточный багаж знаний для создания собственных приложений.

Монетизация

Собирать урожай в виде капусты (придерживаюсь тематики приложения) я решил с помощью рекламы. Выбор пал на Admob. За первую неделю размещения приложения в магазине реклама принесла 4,5 $ при среднем количестве активных пользователей 240 человек в день. Буду надеяться на дальнейший успех, даже помолюсь: “Во имя овса, сена и свиного уха. Аминь”.

009

Дальнейшие планы

Приложение FoodDiary решает только одну задачу — подсчет калорий и БЖУ. В планах есть приложение, которое будет рассчитывать потраченные калории при различных физических упражнениях — бег, велосипед, занятия в тренажерном зале и т. д. Вся информация будет сохраняться в стандартном приложении Здоровье (FoodDiary, если вы ему, конечно, разрешили, также сохраняет полученные с пищей калории и БЖУ в этом приложении). Зная, сколько человек получил калорий с пищей, сколько потратил и его базовый обмен веществ, можно сделать вывод об изменении его веса.

Напутствующие слова

У нас не так много времени, чтобы сливать его. Вы должны найти то, что любите, и это применимо не только к отношениям, но и к работе, увлечениям. Работа и увлечения займут огромную часть вашей жизни, и чтобы быть в гармонии с собой, вы должны знать, что занимаетесь чем-то существенным. А чтобы сотворить что-то существенное, вы обязаны любить это дело. Если вы его еще не нашли, продолжайте искать, не опуская рук.

Название: FoodDiary — Ваш помощник в подсчете калорий
Издатель/разработчик: RINAT ABIDULLIN
Цена: Бесплатно
Встроенные покупки: Да
Совместимость: Для iPhone
Ссылка: Установить

Pages_ Если вам есть, чем поделиться с другими читателями нашего сайта, пишите на advert@appleinsider.ru и не забудьте указать свое имя или ник. Мы внимательно читаем входящие письма и публикуем ваши самые интересные истории.

12 комментариев

  1. 0

    Уважаемый разработчик, все бы хорошо, но человек не ест, сидя рядом с весами, соответственно вычислить порцию не выйдет. А если я съел три пакета гречки и два бутерброда с сыром? (отправлено из приложения AppleInsider.ru)

  2. -2

    Хотя честно сказать, я вам немного завидую. (отправлено из приложения AppleInsider.ru)

  3. -1

    Идея интересная, но время и особенно утром когда бежишь на работу, ну и главное, а где качественные продукты, но спасибо разработчику, можно многое взять на вооружение. (отправлено из приложения AppleInsider.ru)

  4. -2
    Эрик Картман

    Надо просто кушать шикарную курочку из KFC с шикарным фирменным соусом

  5. 0

    Из меня также плохой дизайнер наверное. Но я делаю проще: покупаю готовые дизайны в Sketch. Долларов 50 и у вас есть файл с векторным дизайном практически на все случаи жизни! Ну а уж девелоперу натянуть дизайн на приложение не проблема. Вот так дешево и сердито получается!

  6. 1

    Могу предложить вам в вашем новостном блоге добавить раздел с различными примерами, а так же с мини уроками по Swift и Xcode. Я думаю у вас появится больше подписчиков. (отправлено из приложения AppleInsider.ru)

Авторизуйтесь Чтобы оставить комментарий