Дайджест интересных материалов для мобильного разработчика #394 (17 — 23 мая)


Мобильная ОС компании Apple


Property Wrappers (Обертки Свойств) в Swift позволяют извлекать общую логику в отдельный объект-обертку. С момента представления во время WWDC 2019 и появления в Xcode 11 со Swift 5 было много примеров, которыми поделились в сообществе. Это изящное дополнение к библиотеке Swift, позволяющее удалить много шаблонного кода, который, вероятно, все мы писали в своих проектах.
Историю об обертках свойств можно найти на форумах Swift для SE-0258. В то время как целесообразность их использования в основном говорит о том, что обертки свойств являются решением для @NSCopying свойств, есть общая закономерность, которая реализовывается ими, и вы, вероятно, скоро все узнаете.


Время от времени мне нужно визуализировать данные в виде красивых графиков. В этой статье будет показано, как рисовать графики в SwiftUI-приложении.
Создание пакета для построения графиков с нуля было невозможным из-за ограничений по времени и бюджету, поэтому мне пришлось искать уже существующие решения.
Выбор пал на SwifUI-Charts, который предлагает действительно красиво выглядящие графики и простую интеграцию.

Не каждый язык со статической системой типов обладает такой строгой типобезопасностью, как Swift. Это стало возможным благодаря таким особенностям Swift, как фантомные типы (phantom types), расширения универсальных типов и перечисления со связанными типами. На этой неделе мы узнаем, как использовать фантомные типы для создания типобезопасных API.

Долгие годы наша разработка изобретала и создавала новые решения в HR-tech строго из московского офиса. Но последний год многое изменил: мы не только научились работать удаленно по всей России, но и обзавелись крутой командой в нашей белорусской сестрице rabota.by.
Мы пообщались с лидом всея мобилки hh.ru Сашей Блиновым и разработчиками из Беларуси, чтобы в этой статье рассказать вам, с какими вызовами сталкивается IT в Синеокой, почему в Беларуси отдельное мобильное приложение и как жить, когда твоя команда располагается в разных странах.

Недавно получил интересную задачу в работу, сделать приложение для видео-стриминга, это для стартапа ShopStory (e-comm live streaming). Первую версию приложения реализовал используя Open Source библиотеку для стриминга по RTMP HaishinKit. А вторую версию на Larix SDK. В этой статье разберу какие проблемы возникали в процессе.
Всем привет! Данный пост рассчитан на людей, которые немного знают о том что такое Core Data. Если вы не один из них, прочитайте краткую информацию тут и присоединяйтесь! Прежде всего, мне хотелось бы поделиться своим взглядом на некоторые проблемы и подходы к организации работы с данными в IOS приложениях, надеюсь - это будет как минимум интересно, а может даже и полезно. Поехали!

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

Хотелось ли вам иметь несколько версий одного приложения?
Чтобы одной командой вы могли собрать приложение под определенное окружение?
Сталкивались ли вы с тем, что одновременно нельзя было установить несколько версий одного приложения на одном устройстве?
Всем привет!
Меня зовут Андрей!
И в этой статье я расскажу, как настроить сборку приложения для разных окружений.

Привет, Хабр! Я Миша Игнатов, тимлид в компании Профи. Моя команда отвечает за клиентские мобильные приложения на Android и iOS. Мы используем Kotlin Multiplatform в production с 2019 года. Расскажу, почему мы выбрали именно эту технологию, как внедряли её, какие ключевые этапы прошли и какие сделали выводы.

Построители результатов (result builders) в Swift позволяют получать результирующее значение из последовательности компонентов — выставленных друг за другом «строительных блоков». Они появились в Swift 5.4 и доступны в Xcode 12.5 и более поздних версиях. Ранее эти средства были известны как function builders («построители функций»). Вам, вероятно, уже приходилось использовать их при создании стеков представлений в SwiftUI.
Должен признаться: поначалу я думал, что это некая узкоспециализированная возможность Swift, которую я никогда не стану применять для организации своего кода. Однако стоило мне в ней разобраться и написать небольшое решение для создания ограничений представления в UIKit, как я обнаружил, что раньше просто не понимал всю мощь построителей результатов.

Недавно вышла iOS 14.5, а чуть ранее Apple предупредила разработчиков, что начиная с этой версии ОС необходимо поддерживать фреймворк AppTrackingTransparency, который позволяет получить доступ к IDFA.

Добавьте в Swift свою собственную изюминку
Давайте будем честными. Фреймворки Swift и Apple не обладают всей функциональностью, необходимой при создании лучшего программного обеспечения для устройств Apple. К счастью, Swift поддерживает расширения, чтобы мы могли добавлять недостающие части, необходимые для более удобной работы.
Если вы новичок в Swift, пожалуйста, обратитесь к документации, чтобы узнать больше о Расширениях перед тем, как продолжить.
В этой статье я сосредоточусь на расширениях, которые добавляют дополнительные функциональные возможности к существующим типам. Расширения также могут добавлять функции по умолчанию для протоколов, добавлять ограничения для типов протоколов и многое другое.
При создании собственных расширений я бы порекомендовал создать несколько юнит-тестов для проверки их выполнения, чтобы удостовериться, что вы получаете желаемый результат.
Стремясь к тому, чтобы содержание ниже было относительно кратким, я не включил в описание наши юнит-тесты.
Вы можете найти Xcode Playground, используемый в этой статье, на моей странице GitHub.
Вот только 10 из многих расширений, которые мы используем в Livefront.


Привет! Я Денис Соколов, руковожу R&D в Zenia Yoga — первом приложении для йоги на основе ИИ. В этой статье я расскажу, из чего состоит современная система, работающая с компьютерным зрением: как влияет каждый элемент пайплайна на конечный результат, который видит пользователь. Мы пошагово разберем создание модели для human pose estimation и сравним ее с готовыми «коробочными» решениями от производителей мобильных платформ, а также открытыми аналогами.

Привет, хабр! Представь что ты Usability-специалист, разрабатываешь UX для мобильного приложения с 10 000+ активными пользователями в день в час. Тебе необходимо постоянно тестировать его на большом количестве респондентов. Желательно без встраивания скриптов в исходный код приложения (какая служба безопасности тебе его выдаст?).
К чему это все? Дело в том, что Oprosso вместе с нашей командой Phystech.Genesis с 16 по 18 апреля провели онлайн-хакатон Hack.Genesis_online_, посвященный поиску подходов к решению задачи UX-тестирования мобильных приложений.
Если ты не знал, то Oprosso создает продукты, которые помогают управлять клиентским опытом и проводить сложные исследования в онлайне, чтобы лучше понимать поведение людей в цифровых каналах, изучать их отношение к брендам, продуктам, сервисам. Поэтому задача для них особенно актуальна.
На хакатон мы получили 305 заявок из 13 городов и 4 стран! После долгих обсуждений и подсчетов баллов было отобрано 12 лучших команд (52 человека) для решения задачи. К нам пришли специалисты из разных сфер: мобильные разработчики, аналитики, дизайнеры, проектные менеджеры. И всем было интересно пройти этот челлендж!

Приложения с течением времени будут разрастаться и без хорошей архитектуры, станут неуправляемыми и сложными в обслуживании. Здесь, в OkCupid, мы решили, что лучший способ обеспечить чистый код и хорошую организацию — это разбить кодовую базу на легко управляемые части. К счастью, Apple создала отличный инструмент, чтобы упростить эту задачу.

Привет! Меня зовут Михаил и год назад я стал iOS-разработчиком в компании ЦФТ. До этого почти 8 лет я проработал в сфере логистики и таможенного оформления, а айосером меня можно было назвать разве что из-за наличия iPhone.
Я хочу поделиться своим опытом. Зачем? Меня такие истории мотивировали на старте, и, возможно, именно мой опыт не даст кому-то опустить руки. Моя история не из разряда «как стать джуном за два месяца», а о том, как не соскочить в этом марафоне.

Всем привет!
Все IDE от JetBrains уже обновились, мы же в AppCode немного задержались, проверяя очередные улучшения в кэшировании. Но вот и у нас вышел первый релиз в этом году — AppCode 2021.1!