Обновить
54.65

iOS *

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

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

Мобильная разработка за неделю #493 (12 — 18 июня)

Время на прочтение4 мин
Охват и читатели2.6K
В новом дайджесте все еще обсуждаем WWDC, рассматриваем историю ограничений фоновой работы в Android и ускорение приложений, специфику мобильной разработки и самые популярные языки программирования, push-уведомления, стартап из одного за 50 млн и многое другое!

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

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

Новенькое с WWDC23: Отчёты о тестировании и аудит доступности

Время на прочтение7 мин
Охват и читатели2.3K

Вот и закончилась очередная конференция Apple WWDC23, на которой ребята из Apple рассказали об изменениях Xcode и Swift. 

Поговорим о фичах Xcode 15, которые помогут добавить accessibility в приложение и поддерживать ваши тесты зелеными.

Читать далее

Программные баги, которые приносят реальный вред

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

Три реальные истории из жизни, показывающие возможные проблемы, вызываемые ошибками или недоработками в программном обеспечении. Первая касается продуктов Apple, вторая — устройств Android, а третья связана с багами в ПО канадского гипермаркета стройматериалов.
Читать дальше →

Аутентификация Firebase с помощью Google Sign-In в iOS

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.7K

Аутентификация Firebase с использованием учетных записей Google предоставляет простой способ входа пользователей в приложение iOS с использованием их учетных записей Google. В этом ресёрче я расскажу, как я реализовал аутентификацию Firebase с помощью Google Sign-In в своем iOS-приложении. Я представлю примеры кода, чтобы показать процесс реализации из моего опыта.

Читать далее

Defensive programming. Что это такое и когда использовать

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели4.3K

Хотим мы того или нет, но современное программирование, а точнее современная разработка программного обеспечения, — это в первую очередь бизнес, а не искусство. Это бизнес, который построен на производстве программного продукта. В том или ином виде. И как в любом производстве, в нём существуют свои процессы, управленческие хитрости, критерии качества, конкуренция и истории успехов и поражений.

Я — руководитель платформенной команды в компании, одним из основных продуктов которой являются iOS, Android и веб-фреймворки. Также по совместительству я один из авторов курса по iOS-разработке в Яндекс Практикуме. В этой статье хочу поделиться одним подходом или стилем написания программного кода, который помог лично мне в трудной ситуации, описать набор инструментов, которые могут его обеспечить, поговорить о результатах, которые можно с помощью него достичь, и, разумеется, о цене, которую приходится за это заплатить. Одно из распространённых названий этого стиля — defensive programming (англ. защищённое программирование).

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

Читать далее

UICollectionViewCompositionalLayout

Время на прочтение10 мин
Охват и читатели10K

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

Статья основана на документации apple Implementing Modern Collection Views.

Compositional layouts - это декларативный вид API, который позволяет нам создавать большие макеты путем объединения небольших групп макетов. Compositional layouts имеют иерархию, состоящую из Item, Group, Sections, and Layout.

Чтобы создать любой Compositional layouts, необходимо реализовать следующие четыре класса:

NSCollectionLayoutSize: Размеры ширины и высоты относятся к типу NSCollectionLayoutDimension, которые могут быть определены путем установки доли ширины/высоты макета (в процентах по отношению к его контейнеру) или путем установки абсолютных или расчетных размеров.

NSCollectionLayoutItem: Это ячейка нашего макета, которая отображается на экране в зависимости от размера.

NSCollectionLayoutGroup: содержит NSCollectionLayoutItem в горизонтальной, вертикальной или пользовательской формах.

NSCollectionLayoutSection: используется для инициализации секции путем передачи NSCollectionLayoutGroup. Секции в конечном итоге составляют СompositionalLayout.

Читать далее

Мобильная разработка за неделю #492 (5 — 11 июня)

Время на прочтение4 мин
Охват и читатели3.2K
На этой неделе мы обсуждаем новинки WWDC 2023, создание своих библиотек для Android и анимированных кнопок, выбор Qt и фичи инклюзивного дизайна, AI-плагины для разработки и многое другое.

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

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

AIsaacChat: ИИ чатбот на основе ruT5

Время на прочтение5 мин
Охват и читатели3K

AIsaacChat — это мобильное приложение, которое может общаться, выполнять простые текстовые инструкции и генерировать картинки. 

2023 год стал годом нового бума обработки естественного языка. В магазинах мобильных приложений можно найти огромное количество продуктов с ИИ. В основном под капотом подобные приложения обращаются к API компании OpenAI (chatGPT), и с технической точки зрения реализовать это довольно несложно. Идея создания AIsaacChat была в том, чтобы оно обращалось с языковой модели, которую мы дообучим с помощью своих ресурсов.

Второй причиной создания стала идея объединить в одном приложении генерацию картинок и текста. Очевидно, что таких приложений много, разница состоит в том, что AIsaac может понимать ваши намерения. Что это означает для пользователя? Вы можете задавать Айзеку команды в произвольной форме (“можешь резко нарисовать дом в стиле Ван Гога”), и он поймет, что именно вы от него хотите: сгенерировать текст или картинку. 

Читать далее

Как катить фичи без релизов. Часть 1: про виджеты

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

Backend-Driven UI — это подход для динамичного и гибкого пользовательского интерфейса, в которой бэкенд управляет не только данными в приложении, но и его вёрсткой. Сервер посредством API сообщает приложению какие компоненты и с каким контентом отображать. Сегодня многие команды разработки используют Backend Driven UI и мы в Альфе не исключение — помогает быстро выпускать фичи в продакшн.

У нас в Альфе есть несколько подходов к BDUI и про один из них как раз сегодня поговорим, он называется «Виджеты». Независимость, переиспользуемость, уменьшение копипасты, стандартизация UX и без ревью — это всё о них.

Читать далее

Горячие новинки WWDC 2023

Время на прочтение4 мин
Охват и читатели2.8K

В понедельник стартовал WWDC 2023. Apple рассказала о последних новинках и изменениях, которые сделают жизнь разработчика и конечного пользователя лучше. Мы собрали для вас самые запоминающиеся детали.

Читать далее

WWDC 2023. Что нового для разработчика

Время на прочтение5 мин
Охват и читатели5.9K
image

Всем привет! С вами Анна Жаркова, руководитель группы разработки в ГК Usetech.
Вчера Apple представили Keynote долгожданной WWDC 2023. Как обычно, основная информация по новинкам для разработки вынесена в специальные инженерные сессии, которые будут публиковаться ежедневно всю эту неделю. Краткое описание можно увидеть в What Apple developers need to know at WWDC23

Давайте обсудим основные тенденции и посмотрим, на что будет сделан упор в анонсированных видео. Разумеется, мы не затронем все 175 сессий, но обозначим топовые тематики:

  • SwiftUI,
  • виджеты и App Clips,
  • Swift,
  • безопасность, приватность и сеть,
  • Xcode,
  • VR/AR.

И начнем мы с самой долгожданной для многих разработчиков новинки:
Читать дальше →

Regular expressions in Swift

Время на прочтение11 мин
Охват и читатели9.7K

Регулярные выражения в Swift

Регулярные выражения позволяют нам выполнять сложные операции поиска и замены в тысячах текстовых файлов всего за несколько секунд, поэтому неудивительно, что они популярны уже более 50 лет. Apple обеспечивает поддержку регулярных выражений на всех своих платформах – iOS, macOS, tvOS и даже watchOS – все они используют один и тот же класс, NSRegularExpression. Это чрезвычайно быстрый и эффективный способ поиска и замены сложного текста десятки тысяч раз, и все это доступно для использования разработчиками Swift.

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

Начнем с основ.

Давайте начнем с пары простых примеров для тех, кто раньше не использовал регулярные выражения. Регулярные выражения – сокращенно regexes – предназначены для того, чтобы мы могли выполнять нечеткий поиск внутри строк. Например, мы знаем, что "cat".contains("at") является истиной, но что, если мы захотим сопоставить любое трехбуквенное слово, оканчивающееся на "at"?

Это как раз то, для чего предназначены регулярные выражения.

Сначала определим строку, которую мы хотим проверить.

Регулярные выражения в Swift

Мобильная разработка за неделю #491 (29 мая — 4 июня)

Время на прочтение4 мин
Охват и читатели2.2K
В нашем новом дайджесте опыт проектирования Live Activity и создание адресной системы, повышение скорости запуска и многопоточность, разработка в Японии, обновления Flutter, приложения на арабском, блокировки RuStore и многое другое.

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

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

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

Упрощаем разработку на React Native: чем полезен CocoaPods?

Время на прочтение10 мин
Охват и читатели4.8K

В МойОфис мы создаем продукты для совместной работы и делового общения. В том числе стремимся делать так, чтобы доступ к корпоративной коммуникации был максимально удобным для пользователя. Большинство наших решений — от редакторов документов и почтовых систем до цифрового рабочего пространства Squadus — представлены, помимо десктопа и веба, на основных мобильных платформах.

iOS- и Android-приложения Squadus мы разрабатываем с помощью кроссплатформенного фреймворка React Native. И сегодня расскажем о том, какое значение в iOS-разработке имеет CocoaPods — мощный инструмент управления нативными iOS-зависимостями, который позволяет упростить управление вашим проектом.

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

Читать далее

Современные паттерны навигации в iOS-приложениях

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

По данным 42Matters, каждый месяц в Apple App Store появляется более 30 000 новых приложений. В условиях жесткой конкуренции требования к новым проектам постоянно растут. Чтобы стать популярным, приложению нужно быть полезным, удобным, интуитивно понятным, логичным и просто красивым. Многие из этих качеств зависят от правильно построенной навигации и применения узнаваемых дизайнерских паттернов.

Как настроить навигацию в iOS-приложении так, чтобы пользователю было легко взаимодействовать с интерфейсом? Чтобы помочь UI/UX-дизайнерам и рассказать о самых популярных паттернах навигации для iOS приложений, мы перевели статью от дизайнера интерфейсов Фрэнка Рауша. Фрэнк — преподаватель, эксперт по юзабилити и консультант по дизайну в международных компаниях. В своем блоге он рассказывает, что такое пирамидальная, пошаговая и плоская навигация, а мы делимся этой информацией с русскоязычными дизайнерами. 

Читать далее

Нельзя просто взять и сделать нормальную адресную систему в приложении

Время на прочтение8 мин
Охват и читатели5.5K

Олды помнят, как ещё каких-то 10-15 лет назад заказывали пиццу по телефону, диктуя адрес операторам кол-центра. Мало кто тогда думал, что отсутствие подсказок адресов и карты на сайте с определением геолокации, а уж тем более в мобильном приложении, будет вызывать у нас реакцию «да сложно, что ли, нормальную карту сделать?».

Но вот мы здесь, рассказываем, как в Додо Пицце лишь недавно появилась уже привычная многим адресная система. Как так вышло — история долгая и не всем интересная. Скажу только, что переделывать и менять как-то работающее старое на новое в большой системе — тот ещё квест. В итоге нам пришлось зарыться достаточно глубоко во внутренности Dodo IS, чтобы можно было добавлять адреса с помощью карты. В этой статье расскажу, с чего мы начинали и как реализовали эту фичу в нашем iOS-приложении.

Читать далее

Layout библиотека для iOS проектов

Время на прочтение2 мин
Охват и читатели1.5K

Несмотря на то, что UIKit постепенно уступает место более современному во всех отношениях SwiftUI, до сих пор остается огромное количество проектов, которые основаны на фреймворке UIKit. Далее будет представлена библиотека, которая позволяет выполнять конструирование внешнего вида намного быстрее и удобнее, чем стандартные средства.

Читать далее

Мобильная разработка за неделю #490 (22 — 28 мая)

Время на прочтение4 мин
Охват и читатели2.6K
В новой подборке однонаправленные архитектуры и ошибки при публикации, не писание сетевого слоя и паттерны проектирования, лучшие практики, проектирование интерфейсов, состояние Fuchsia, лучшие пейволы и многое другое!

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

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

Swift Concurrency Instrument: чем он полезен iOS-разработчику

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

Swift Concurrency Instrument помогает наглядно увидеть, что происходит в приложении с асинхронным кодом. Пошагово рассказываем, как устроен этот инструмент, и на примерах показываем, чем он может быть полезен.

Читать далее

Использование TabularData для Dump Data Model

Время на прочтение6 мин
Охват и читатели680

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

Например, фреймворк может быть использован для:

Читать далее