Обновить
37.56

iOS *

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

Сначала показывать
Порог рейтинга
Уровень сложности

Как мы строили BDUI: опыт Яндекс Маркета

Время на прочтение11 мин
Количество просмотров6.4K

Привет! Меня зовут Алексей Морозов. Я уже несколько лет работаю в инфраструктурной команде Яндекс Маркета. Наша команда делает проекты, которые должны были улучшить скорость приложения, его качество и скорость разработки. Однако раньше такие проекты решали эти проблемы только на время, приложение снова деградировало. Всё это напоминает древнегреческий миф, в котором Сизиф толкает в гору камень, он скатывается вниз, и всё начинается по новой.

Такое положение дел нас не устраивало, поэтому было принято решение изменить подход. И мы построили BDUI (Backend Driven UI). В этой статье я расскажу о том, как это случилось, что сделали и какой в итоге получили результат. 

Читать далее

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал)

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров5.7K

В этой статье мы рассмотрим тонкости создания Proof of Concept (PoC) мобильного приложения, построенного с помощью фреймворка SwiftUI и бэкенда с использованием FastAPI и OpenAI API. Дополнительно я продемонстрирую эффективные архитектурные паттерны для SwiftUI-приложений, в частности MVVMP в сочетании с принципами SOLID и Dependency Injection (DI). Для андроид код можно легко перевести на Kotlin с помощью Jetpack Compose Framework.

Читать далее

NTP для мобильных разработчиков: Как точное время повысит качество ваших приложений

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3.1K

Все разработчики мобильных приложений сталкивались с проблемой точности времени. Часто для ее решения прибегают к различным методам, например, получают время с собственного сервера. Однако, существует гораздо более простой и удобный способ — использование NTP (Network Time Protocol). В этой статье мы разберемся, что такое NTP, как он может быть полезен для мобильных разработчиков, какие библиотеки существуют для работы с ним и в каких кейсах его использование особенно актуально.

Читать далее

SwiftUI инпут: проблемы и решения

Уровень сложностиСредний
Время на прочтение28 мин
Количество просмотров2K

Представьте, что вам нужно реализовать комплексный компонент инпута на SwiftUI. Что может пойти не так? Какие сложности могут возникнуть? На эти и другие вопросы постараюсь ответить в статье, где реализуем компонент со скрина, а также разберем возможные проблемы.

Читать далее

Мобильная разработка за неделю #540 (27 мая — 2 июня)

Время на прочтение4 мин
Количество просмотров2.1K
В новом дайджесте разбираем основы iOS-разработки в Revolut и оцениваем финалистов Apple Design Award 2024, обновляем адаптивные макеты на примерах с I/O и продолжаем ставить на Flutter, тираним пользовательские интерфейсы, катим MobAIle-разработку, делаем кондиционер умным и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

Читать дальше →

SwiftUI уроки (часть 13)

Время на прочтение15 мин
Количество просмотров2.1K

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

Читать далее

Pедактор цен для iOS подписок

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.1K

Каждый разработчик iOS, стремящийся выйти на глобальный рынок или активно экспериментирующий с ценами в разных странах, сталкивается с неудобством работы через App Store Connect. Существует множество отличных инструментов для контроля подписок и управления экранами платежей, но до недавнего времени на рынке отсутствовал интегрированный с Apple редактор цен. Именно эту нишу и стремится заполнить aso.dev со своим редактором цен на iOS подписки.

Читать далее

Стэнфордский курс CS193P “Разработка iOS приложений в SwiftUI” Весна 2023: русскоязычный конспект с адаптацией к iOS 17

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5.8K

Если вы хотите получить фундаментальные знания по разработки  iOS приложений с помощью SwiftUI, вам следует пройти стэнфордский курс CS193P. Предложенные в весеннем семестре 2023 года лекции Стэнфордского курса CS193P «Developing  Application for iOS with SwiftUI» («Разработка приложений для iOS с использованием SwiftUI») — это уже 3-я реинкарнация курса CS193P с фреймворком SwiftUI.

В настоящий момент действуют Xcode 15 / iOS 17, которые были представлены на WWDC 2023 уже после завершения курса CS193P, наиболее значимое обновление внесено в механизм реактивного UI в SwiftUI (макрос @Observable против протокола ObservableObject).

В иллюстрированных  русскоязычных конспектах этого курса сделаны пометки, касающиеся изменений в iOS 17. Для большинства Лекций представлена версия с  использование макроса @Observable вместо протокола ObservableObject, в ряде случаев это потребовало нетривиальных решений. 

Читать далее

Мобильная разработка за неделю #539 (20 — 26 мая)

Время на прочтение4 мин
Количество просмотров3.3K
В этом выпуске работаем с SwiftUI на iOS 14, снова обсуждаем Google I/O 2024 и проводим скриншот-тестирование для превью Compose, оцениваем Flutter 3.22, пишем 2D-игры для кнопочных телефонов нулевых и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

Читать дальше →

Пермишены (permissions) для тестировщика: зачем нужно, что такое и как с этим работать

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров9.5K

Приветствую?

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

Меня зовут Антон, я QA Mobile в компании MobileUp. В статье я разберу, что такое пермишены, для чего нужны, какие виды существуют, где их можно найти и как тестировать.Эту статью я пишу исключительно с точки зрения ручного тестирования, но в конце текста оставлю интересные ресурсы, которые могут пригодиться для QA Auto (но это не точно ?).

Читать далее

Как поправить 3 проблемы MVx архитектур

Время на прочтение9 мин
Количество просмотров3.5K

Другие статьи из серии:
1. Почему MVx архитектуры всегда получаются плохо
2. Как поправить 3 проблемы MVx архитектур
3. Кроссплатформенная архитектура ядра приложения. Простая. Линейная. Масштабируемая
4. Т-функция: подключаем логику к UI как к БД


Intro


Итак, в прошлый раз я описал три проблемы, которыми, на мой взгляд, страдают все MVx и даже некоторые не MVx архитектуры. Если коротко, то это:


  • проблема остатка — при делении фичи на заявленные компоненты архитектуры остаётся либо «неделимая» часть фичи, либо лишние компоненты архитектуры;

    image
  • проблема масштабирования — при расширении фичи компоненты архитектуры начинают раздуваться, что усложняет дальнейшую поддержку;

    image
  • и проблема разрывов логики, когда из-за взаимодействия с UI логика разрывается на части, что тоже не помогает нам делать систему более цельной, предсказуемой и тестируемой.

    image

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

Читать дальше →

SwiftUI на iOS 14: преодолевая баги и улучшая перформанс в 3 раза

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров8.8K

Привет, меня зовут Никита, я iOS-разработчик в команде Яндекс Диска. В этой статье я расскажу про наш опыт разработки на SwiftUI с минимальным деплоймент таргетом iOS 14.

В статье я собрал топ-6 багов, с которыми можно столкнуться, а еще поделился, что помогает улучшить перформанс SwiftUI и ускорить ваши view в 3 раза.

Читать далее

AVPlayer seek(to:… vs seek(…tolerance

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.5K

Привет всем! Это моя внеочередная статья, о том что нагорело. У меня за последний год накопилось много интересного (и не очень :) ) материала. Но эту статью хочу написать вне очереди. Не так давно я столкнулся с интересным поведением метода seek(to: CMTime). Об этом и хочу написать.

Но начнем по порядку.

AVPlayer известен нам с iOS 4. Он содержит AVPlayerItem, AVAsset.

Читать далее

Ближайшие события

Новая жизнь или начало экзистенциального кризиса?

Время на прочтение39 мин
Количество просмотров1.6K

Ни для кого не секрет, что популярные языки программирования развиваются по схожему сценарию. Сначала появляется новый язык программирования с амбициозной и благой целью решить те или иные проблемы уже существующего языка, которые иначе, как созданием нового языка программирования, не решить. Далее язык набирает популярность, часто путем обрастания различными модными фичами. Теряет связь с миром свою простоту и лаконичность в бесконечной погоне за новыми возможностями. В какой-то момент наступает экзистенциальный кризис в виде Франкенштейна. А как отмыть кровь решать подобные проблемы, мы уже знаем. Или я несколько утрирую (или нет?), и, возможно, не все так плохо? Сегодня поговорим об этом в общем и о новом функционале языка Dart в частности.

Читать далее

Мобильная разработка за неделю #538 (13 — 19 мая)

Время на прочтение4 мин
Количество просмотров3.7K
В новом дайджесте обсуждаем прошедшую I/O, проводим карантин UI-тестов и смотрим как Notion ускорил запуск на Android в 2 раза, отмечаем новые Flutter и Dart, боремся с догмами программирования и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

Читать дальше →

Слежка через пуш-уведомления на смартфонах

Время на прочтение4 мин
Количество просмотров33K


Недавно стало известно о новом виде слежки за пользователями смартфонов: через пуш-уведомления в iOS и Android. Газета Washington Post написала, в частности, что эту тактику начало использовать ФБР (кэш статьи).

Довольно интересно, как работает такой метод выслеживания.

Согласно расследованию, для идентификации пользователей ФБР запрашивает у компаний Apple и Google данные пуш-уведомлений, так называемые «пуш-токены» (push token). Эти данные можно запрашивать без предъявления ордера. С помощью пуш-токенов можно идентифицировать конкретный смартфон, а потом запросить у компании данные о его владельце.
Читать дальше →

Flutter и натив. Пример с Яндекс OAuth

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров4.1K

В жизни каждого flutter разработчика наступает момент, когда нужно пересесть с удобного кресла Dart , на нативные табуретки swift или kotlin для реализации пары фичей. Показываю, как работать с хост-приложениями на примере Яндекс ID.

Читать далее

SwiftUI уроки (часть 12)

Время на прочтение10 мин
Количество просмотров2.2K

ссылка на 11-ю часть

Работаем с Form и учимся использовать Picker, Stepper и Toggle

Практически в любом приложении вы в том или ином виде встречается с формами, под формами я имею ввиду такие объекты которые группируют в себе какие то данные которые вы заполняете или выставляете - например для настройки приложения или может быть для сохранения какой-то полезной для себя информации, такие формы позволяют пользователю интуитивно двигаться по интерфейсу и сразу цеплять глазом то, что именно они хотели бы заполнить или получить. Для разработчиков которые используют SwiftUI формы также стали очень удобным объектом, весь количество секций в форме всегда конечно, всегда имеет понятные значения и кажется что использовать их вместо например таблиц просто выглядит более логичным конкретно в таком контексте.

Сегодня мы с вами посмотрим на эти самые формы и научимся с ними работать, так как тема это довольно простая - мы заодно поработаем с Picker, Stepper и Toggle чтобы расширить свой кругозор относительно инструментов предоставляемых во фреймворке SUI.

Читать далее

Что нам показывают карты

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров3.4K

Всем привет! Меня зовут Женя, я работаю iOS разработчиком в каршеринг-сервисе Ситидрайв, где мы с командой стремимся улучшить пользовательский опыт и сделать наше приложение более интуитивно понятным и функциональным. В этой статье я расскажу, как у нас организована работа с картой: как отображаем автомобили и другие объекты, какие проблемы возникали в процессе разработки, и почему мы выбрали формат данных GeoJSON. Также поделюсь особенностями работы с форматом, которые важно знать любому разработчику и расскажу о некоторых его преимуществах.

Читать далее

Добавляем объём в visionOS-приложение

Время на прочтение5 мин
Количество просмотров789

В этой статье постараемся разобраться, как использовать Volume для создания иммерсивного 3D-опыта в visionOS.

Volume (или «объем») представляет 3D-контент, не занимающий все доступное пространство, который пользователи могут наблюдать в любом удобном для них ракурсе. Объемы служат контейнерами для иммерсивного опыта, позволяя исследовать реалистичные представления 3D-объектов.

Читать далее