В нашей работе нередко возникает необходимость реализовать отправку видеопотока с iOS-устройства в реальном – или близком к реальному – времени. Самый частый пример — использование iOS-устройства в качестве камеры слежения или создание стриминговых приложений наподобие Periscope. Как правило, при возникновении подобной задачи ставятся дополнительные условия — например, возможность проигрывания потока на другом устройстве (или в другом приложении) без возникновения лишних проблем в браузере или VLC-плеере, малые задержки (видеопоток должен транслироваться практически в режиме реального времени), низкая нагрузка на устройство (возможность длительной работы от батареи), отсутствие необходимости в специализированном медиасервере для обслуживания передачи потока, и т.п.
Category Archives: Разработка
Методические пособия по разработке под платформу Adobe FMS, исходные коды приложений на Action Script, SSAS
Синхронизация данных в iOS приложениях, использующих Core Data
Использование возможностей UIDynamicAnimator в приложениях под iOS 7
После выхода iOS 7 у разработчиков появилось очень много новых инструментов для создания интересных и увлекательных эффектов и анимаций. Но уместность использования многих из них по-прежнему остаётся под вопросом. Изучив некоторые из них, мы решили в новом нашем проекте сделать анимацию, аналогичную реализованной Apple в приложении «Сообщения».
Для реализации такого поведения нам пришлось заменить используемый сначала экземпляр класса UITableView на UICollectionView, так как только последний был адаптирован Apple для работы с объектом-аниматором UIDynamicAnimator.
После этого мы переопределили стандартный UICollectionViewFlowLayout:
[gist id= 7153677 file=DVCollectionViewFlowLayout.h]
в котором определили объект UIDynamicAnimator и переопределили необходимые для реализации функции:
[gist id= 7153677 file=DVCollectionViewFlowLayout.m]
Динамическое поведение становится активным, когда вы его добавляете к объекту- аниматору, который является экземпляром UIDynamicAnimator. Аниматор определяет контекст в котором динамическое поведение выполняется.
Объект UIAttachmentBehavior определяет связь между динамическим элементом класса UICollectionViewLayoutAttributes и точкой item.center. Когда точка перемещается, присоединенный элемент также перемещается. C помощью свойств length, damping и frequency можно настроить поведение нужным нам образом.
[gist id= 7153677 file= UIAttachmentBehavior]
Также важно правильно подобрать resistanceFactor
[gist id= 7153677 file= resistanceFactor]
Другие статьи по теме:
Создание кастомного UIActivity для публикации фото и текста в социальной сети ВКонтакте
Во время работы над очередной версией приложения PhotoSuerte возникла задача сделать публикацию фото в социальной сети ВКонтакте через стандартный контроллер UIActivityViewController.
Настройка Jenkins CI на Mac OS X для сборки Android- и iOS-приложений Phonegap/Cordova и размещения их в TestFlight/HockeyApp
Разработка мобильных приложений в большинстве случаев является весьма увлекательным занятием, особенно если вам самим нравится то, что вы создаете.Работая с приличным количеством внешних проектов (мы разрабатываем приложения и сайты на заказ), а также с растущим числом своих внутренних приложений, мы задумались о минимизации времени и сил затрачиваемых на подготовку тестовых и релизных сборок приложений.При наличии нескольких разработчиков, тестировщиков и приличного числа проектов, затраты на подготовку сборок становятся весьма существенными.Поэтому чтобы не тратить силы зря и заниматься тем, что действительно важно для ваших сервисов, предлагаем инструкцию по созданию системы автоматической сборки приложений.Описанный далее подход мы используем, в первую очередь, в своих приложениях, с которыми предлагаем вам познакомиться: Together, PhotoSuerte, Routes.Tips. Continue reading
Node.JS & MongoDB: молниеносная быстрота создания прототипов
Те, кто разрабатывает мобильные приложения, обычно начинают думать о рабочем прототипе сразу же после создания предварительного макета. В контексте методологии Lean Startup и концепции минимально жизнеспособного продукта (MVP) не будет преувеличением сказать, что создание прототипа до момента принятия окончательных решений архитектурного плана жизненно важно для успеха проекта. Раньше у многих была удобная отговорка, что создание прототипа дело исключительно трудоемкое. Однако сегодня для большинства проектов разработки мобильных приложений это совсем не так. Разработав прототип, вы можете гораздо быстрее получить ценные отклики от своих пользователей, а значит, гораздо более осознанно переосмыслить архитектуру и динамику своего приложения.
В этой статье я хочу поделиться методологией, которой мы обычно придерживаемся в наших проектах. При разработке прототипов для наших новых приложений мы всегда используем сочетание Node.js и MongoDB. Это позволяет нам избежать существенных трудозатрат на разработку серверной части и получить готовый сервис всего за несколько недель. Более того, полученную архитектуру можно в дальнейшем масштабировать. Теперь давайте подробнее разберем наш подход на примере недавно запущенного приложения PhotoSuerte. Это приложение позволяет случайным пользователям общаться друг с другом, обмениваясь фотографиями. Предлагаю сразу перейти к делу, чтобы не тратить ваше драгоценное время. Прочитав эту статью, вы можете сразу приступить к созданию прототипа вашего следующего мегаприложения! Continue reading
PhotoSuerte: обменивайтесь фотографиями и общайтесь с людьми по всему миру!
2 декабря 2013, Москва, Россия. Cегодня фоточат стал одним из самых популярных и увлекательных видов общения между людьми. C новым приложением PhotoSuerte любой человек может в любой момент заглянуть в любую точку земного шара.
Компания DENIVIP Group, российский разработчик программного обеспечения, объявляет о выпуске новейшего мобильного приложения для фоточата. Знакомьтесь: PhotoSuerte. PhotoSuerte в случайном порядке подбирает собеседников и позволяет им обмениваться друг с другом фотографиями. Приложение дарит вам уникальную возможность увидеть другие страны и континенты глазами тех, кто там живет. PhotoSuerte — это не только яркие новые впечатления, но и возможность разделить с другими людьми страсть к фотографии и творческому самовыражению. Continue reading
Реализация лайв-стриминга снимаемого видео в приложении для iOS
Под лайв-стримингом мы понимаем функцию приложения, которая позволяет передавать видео по сети одновременно со съемкой, не дожидаясь полного окончания записи видеофайла.В этой статье мы хотим рассказать о том, как мы подошли к ее решению в ходе разработки Видеокамеры Together для iOS. Continue reading
Эффект параллакса в iOS приложениях
Идея использования параллакса в дизайне мобильных приложений не нова. Как и многие другие, она пришла к нам из мира веб-дизайна, где поначалу стала очень распространённым направлением. Параллакс придаёт дизайну впечатляющий эффект глубины и кажущийся объём. К настоящему моменту в силу некоторых неудобств, связанных со спецификой разработки веб-приложений, мода на параллакс в оформлении сайтов поутихла. Однако мобильные приложения — это совсем другой разговор. Параллакс в мобильном дизайне живёт и пока не собирается никуда уходить, и даже добавлен по-умолчанию в дизайн новой iOS 7!
В этой статье мы расскажем вам о нашем компоненте DVParallaxView, и продемонстрируем на примере его устройства, как добавить в приложение точно такой же эффект параллакса, как и в home screen в iOS 7. И даже лучше. Continue reading
Осваиваем Core Motion в iOS
Появление в серии телефонов iPhone акселерометра, гироскопа и магнетометра открыло новые возможности перед разработчиками приложений для iOS. Однако, несмотря на то, что с момента появления доступа к их API прошло уже несколько лет, до сих пор в интернете существует довольно мало информации по их использованию. С одной стороны — эта тема в действительности не так объёмна, чтобы посвящать ей книги или даже серии статей. Но с другой — существуют определённые детали и подводные камни, о причинах и сути которых нужно знать. Эта статья предназначена для тех разработчиков, которые хотят освоить использование акселерометра и гироскопа в iPhone. Continue reading