Гибридные мобильные приложения. Часть 4: Камера + использование Parse в качестве хранилища файлов

Дата публикации:

Едва ли вы удивитесь, если узнаете, что гибридные приложения не имеют смысла без возможности использования стандартных функций телефона и операционной системы. Мы продемонстрируем вам такие возможности на примере работы с камерой, а также поделимся опытом преодоления сложностей, возникших на пути разработчиков. В любой непонятной ситуации ложись спать — гласит народная мудрость. Но это — не наши методы.

Чтобы получить доступ к камере, нам следует установить плагин для Cordova. Гибридные мобильные приложения, использование Cloud Code, безопасность Parse приложений, Parse приложения. К счастью, с этим проблем не возникло. Приложение располагает набором ключевых плагинов, которые, по всей вероятности, разрабатываются командой Cordova и имеют достаточно стабильный код

Логика работы нашего приложения выглядит так:

  • создаем фото и помещаем его во временный файл;
  • открываем созданный файл;
  • сохраняем его на Parse.

Есть еще один вариант, при котором логику работы приложения можно сократить до двух шагов. В таком случае плагин выдаст результат в base64. Напомним, что Parse умеет принимать данные в этом формате. Итак, нам требуется два плагина — для работы с камерой Camera и локальными файлами File.

Для установки плагина Camera нужно выполнить команду:

Аналогичная манипуляция потребуется для плагина File.

Решив поставленные задачи, мы в обязательном порядке пересоберем платформу:

После этого у нас возникла проблема. Приложение перестало запускаться.

Во-первых, вышеуказанная команда стала падать с ошибкой. Во-вторых, перестал компилировался плагин File. В итоге мы его удалили и попробовали загрузить из хранилища плагинов. Как оказалось, для этого потребовалось использовать другое имя:


Плагины являются самым слабым местом гибридных приложений. Они разрабатываются сообществом и поправить в них что-либо без опыта программирования под мобильные платформы весьма сложно. Точнее сказать почти невозможно.

Здесь хочется сделать несколько рекомендаций для веб девелоперов, которые не обладают необходимым опытом работы с мобильными платформами:

  1. Изучите github issues по плагину. Весьма вероятно, что с вашей проблемой уже кто-то сталкивался.
  2. Ветка master на github может оказаться стабильнее, чем плагин в репозитории, как, впрочем, и любая другая ветка.
  3. Попробуйте найти индивидуальное решение для своей платформы. Цель поиска — понимание того, какой примерно код следует найти в исходниках плагина и что нужно сделать дополнительно. Например, для того чтобы приложение отображало LocalNotification необходимо запросить соответствующие права на их использование. Этот пункт актуален, прежде всего, для iOS.
  4. Если используется сразу несколько плагинов, выполняющих идентичные функции, попробуйте собрать их воедино.

От теории переходим к практике. Вы знаете, что мышцы лица имеют двухстороннюю связь с настроением человека? Мы улыбаемся, когда нам весело. Переворачиваем медаль другой стороной и понимаем, что для поднятия настроения иногда достаточно просто улыбнуться. Мы решили использовать этот принцип при разработке нашего приложения. В результате в него был добавлен такой функционал: делаем фотографию камерой смартфона и загружаем ее в Parse. В свою очередь, на стороне Parse добавляем класс Selfie с полями

Не будем акцентировать внимание на маршрутизации (о ней шла речь в предыдущих статьях) и перейдем к реализации контроллера. Именно там кроется все самое интересное.

Небольшой комментарий к коду контроллера. Начнем с метода this.newSelfie

Нам потребуется два callback: onSuccess и onError. onSuccess отработает только в случае успешного создания временного файла. При возникновении внутренней ошибки или  закрытии камеры отработает onError.

При вызове камеры, помимо callback, мы можем указать дополнительные опции. По умолчанию для нее доступны фото и видеосъемка. Так как нас интересует только фото — указываем это в опциях. Между прочим, плагин умеет открывать локальные файлы (абсолютно любые файлы для Android или изображения для iOS). Кроме описанной опции, используем в примере еще одну — correctOrientation. Она потребуется для исправления ориентации изображения на Android.

В действительности, параметров гораздо больше. Со всем их массивом вы можете ознакомиться, изучив документацию. Старый добрый принцип RTFM (read the fucking manual) работает безупречно.

Отметим следующее — когда мы использовали этот плагин впервые, информации о флаге correctOrientation в документации найти не удалось. Решить проблему помог старый-добрый Google. Поковырявшись в поисковой выдаче, мы выяснили, что должно быть в коде, затем открыли исходники плагина и узнали, что пациент (он же плагин) тоже так умеет.

Вернемся к коду. Итак, мы сделали снимок. Ожидаемый результат — локальный урл на  временный файл. Cordova File плагин предоставляет нам метод, с помощью которого мы сможем его открыть:

Однако на выходе получается не совсем то, что нам нужно. Полученное значение является всего лишь указателем на файл, который мы незамедлительно открываем:

затем сохраняем его в Parse:

Что мы сделали? Сохранили файл на сервер, а затем указали его в качестве атрибута при сохранении нового значения. Далее отображаем полученное изображение в приложении:

Дело сделано. Исходный код учебного приложения по традиции отправляется на GitHub. Следующая статья будет посвящена рефакторингу кода приложения, использованию Parse.Cloud и вопросам безопасности в Parse приложениях.

Не переключайтесь!

Мы Крым Диджитал

С 2015 года мы предоставляем полный цикл услуг мобильной и веб-разработки клиентам из различных отраслей и разных стран.

Подпишись
на наши новости

Контакты пресс-службы

+ 7 (926) 118-80-32

WhatsApp, Viber, Telegram

Давайте обсудим Ваш проект

или свяжитесь с нами по почте projects@crimeadigital.ru

Нажимая кнопку «Отправить», вы даете согласие на обработку персональных данных

Заполните форму или свяжитесь
удобным для Вас способом

Контакты

г. Севастополь, ул. Руднева, д.41, 4 этаж технопарк ИТ-Крым +7 978 679-76-353 agro@crimeadigital.ru

Социальные сети

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Крым Диджитал приняла участие в стратегической сессии

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня. Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства. Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня.

Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.
Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства.

Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Выпуск курса Software Testing

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing! Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании. Следующий курс намечен на август. Не пропусти анонс записи!

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing!

Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании.

Следующий курс намечен на август. Не пропусти анонс записи!

Лицензия на образовательную деятельность

В 2022 году мы получили лицензию на образовательную деятельность по программам дополнительного профессионального образования! Теперь мы можем обучать специалистов по направлениям Ruby on Rails, ReactJS и Software Testing и выдавать удостоверения о повышении квалификации государственного образца.
В 2022 году мы получили лицензию на образовательную деятельность по программам дополнительного профессионального образования! Теперь мы можем обучать специалистов по направлениям Ruby on Rails, ReactJS и Software Testing и выдавать удостоверения о повышении квалификации государственного образца.

Мы вошли в Реестр эффективно и социально значимых предприятий.

По результатам ежегодной финансово-экономической аналитики Межотраслевой рейтинговой компании Крым Диджитал включена в Реестр эффективных и социально значимых предприятий. По итогу аналитики, в рамках отрасли (ОКВЭД 62.01) и региона Крым, CDG вошло в 4% лучших компаний страны, с результатом – 92 балла!
По результатам ежегодной финансово-экономической аналитики Межотраслевой рейтинговой компании Крым Диджитал включена в Реестр эффективных и социально значимых предприятий. По итогу аналитики, в рамках отрасли (ОКВЭД 62.01) и региона Крым, CDG вошло в 4% лучших компаний страны, с результатом – 92 балла!