Как стать автором
Обновить
89.97
Рейтинг

Разработка под iOS *

Популярная мобильная ОС

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Async/await для существующих iOS-приложений

Блог компании Skyeng Разработка под iOS *Разработка мобильных приложений *


Ранее я писал статью о работе оффлайн с веб-контентом. С того времени команда Apple выпустила Xcode 13.2 и Swift 5.5. Прочитав книгу о современной модели многопоточности в Swift, я понял, что это лучшее время для обновления моих примеров с async/await!
Перед прочтением моей статьи очень рекомендую прочитать материал о многопоточности в Swift Language Guide.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 708
Комментарии 2

Новости

РКН против приложения «Навальный»: борьба за доступность

Разработка под iOS *Разработка мобильных приложений *Разработка под Android *DevOps *

2021 год в России запомнится беспрецедентной волной судебных и внесудебных блокировок ресурсов средствами DPI. 26 июля Роскомнадзор заблокировал множество наших ресурсов: блог Навального navalny.com, сайт сети региональных штабов shtab.navalny.com, сайт Фонда борьбы с коррупцией fbk.info и другие. Под блокировки попали даже сайты проектов «РосЯма» и «РосЖКХ». Все перечисленные ресурсы были заблокированы на основании требования Генеральной прокуратуры РФ как содержащие призывы к массовым беспорядкам, осуществлению экстремистской деятельности, участию в массовых (публичных) мероприятиях, проводимых с нарушением установленного порядка, и информационные материалы организаций, деятельность которых признана нежелательной. Сайт проекта «Умное голосование» заблокировали за неделю до выборов — 6 сентября. С конца августа РКН развернул настоящую войну с приложением «Навальный» и чуть не сломал весь российский интернет.

В этом посте мы расскажем о противостоянии, которое развернулось между нашей командой и РКН летом — осенью 2021 года: о технологиях по обходу блокировок, о собственной системе мониторинга, о том, как нам удалось «обучить» РКН регулярным выражениям. Расскажем, как РКН был вынужден пойти на крайние меры, попытавшись заблокировать публичные DNS в России, и каких результатов нам удалось достичь. 

Наша команда рассматривала сценарий блокировок заранее. Еще в 2020 году было решено использовать мобильное приложение как основной инструмент доставки до пользователей постов в блоге и рекомендаций «Умного голосования».

Читать
Всего голосов 309: ↑289 и ↓20 +269
Просмотры 23K
Комментарии 114

Кодогенерация DTO: зачем она нужна и как её настроить

Блог компании Яндекс Разработка под iOS *Разработка мобильных приложений *Геоинформационные сервисы *Swift *
Data Transfer Object — модель данных, которые мы передаём из одного слоя приложения в другой. В Яндекс Go мы активно используем DTO. Предположим, нужно отобразить в UI приложения для вызова такси экспериментальную кнопку с двумя свойствами — надписью на кнопке и ориентировочным временем ожидания такси. Тогда в сетевом слое надо написать примерно такую DTO-модель:

struct OrderButtonExperimentDTO: Decodable {
   let buttonTitle: String
   let estimationMinute: Int
}

Правильно написанная модель позволяет разрабатывать разные слои приложения независимо — но нужно следить за актуальностью самой модели на каждом слое. Например, если в коде выше ожидалось не estimationMinute, а estimationMinutes, то клиент не сможет декодировать полученные из сети данные и пользователь не увидит время ожидания. Такую ошибку легко совершить, в n-й раз перепечатывая названия переменных под каждый слой — а разработчики и правда должны рутинно это делать при любом изменении (или расширении) исходного формата данных. Ещё сложнее заметить ошибку на код-ревью.

Поэтому мы решили добавить механизм, который сам бы составлял и переписывал код моделей DTO в зависимости от исходного формата.
Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 1.4K
Комментарии 4

Bottom Sheet, перейдём на «ты»?

Блог компании Joom Разработка под iOS *Разработка мобильных приложений *Swift *
Tutorial

Bottom Sheet представлялся мне сложным и недосягаемым. Это был вызов! Я не понимал, с чего начать. Возникало много вопросов: использовать view или view controller? Auto или manual layout? Как анимировать? Как скрывать Bottom Sheet интерактивно?

Но всё изменилось после работы над Bottom Sheet для приложения Joom, где он используется повсеместно. В том числе и в таких критических сценариях, как оплата. Так что могу точно сказать, что в этом компоненте мы уверены. Настолько уверены, что я даже рассказывал о нём на Podlodka iOS crew #7. В рамках воркшопа я показал, как сделать Bottom Sheet, который умеет подстраиваться под размер контента, интерактивно закрывается и поддерживает UINavigationController.

Стоп, но Apple же предоставила системный Bottom Sheet. Зачем писать свой? Действительно, это так, но компонент поддерживается только с iOS 15. А это значит, что полноценно его можно будет использовать только через 2-3 года. К тому же часто требования дизайнеров выходят за рамки стандартных iOS-элементов.

В рамках статьи хочу развеять туман над Bottom Sheet, ответить на вопросы, которыми задавался я сам и предложить один из вариантов реализации. Чтобы в конце вы могли добавить в резюме строчку «Профессионально делаю Bottom Sheet'ы»

Если заинтересовал, то начнём! Создадим простой Bottom Sheet и шаг за шагом его прокачаем.

1. Научимся подстраиваться под размер контента и закрывать Bottom Sheet.

2. Добавим интерактивное закрытие, учитывая контент, который скроллится.

3. Поддержим UINavigationController с навигацией внутри Bottom Sheet.

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 1.5K
Комментарии 10

React → React Native: снится ли фронтендерам мобильная разработка?

Блог компании СберМаркет Разработка под iOS *Разработка мобильных приложений *Разработка под Android *ReactJS *


Привет! Я Виктор Ильтимиров, разработчик мобильных приложений в СберМаркете. Хочу рассказать, сложно ли переходить с React на React Native и зачем команда СберМаркета использует Reanimated.

Ранее я рассказывал об этом в докладе React → React Native Meetup | SberMarket Tech.
Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Просмотры 2.8K
Комментарии 6

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

Блог компании Productivity Inside Разработка под iOS *Разработка мобильных приложений *Разработка игр *Разработка под Android *
В последнем нашем дайджесте в этом году использование языков в приложениях iOS 15, парковка магнитолы по гайдлайнам Гугла и укрощение батчинга, исходники Telegram, отказ от модульного тестирования и многое другое! С наступающим Новым Годом!

Читать дальше →
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 1.1K
Комментарии 0

SwiftUI: Как Чук и Гек искали nil

Разработка под iOS *Swift *

Эта таинственная история рассказывает о том, как два брата акробата программиста Чук и Гек начали делать свой проект на SwiftUI и столкнулись с неведомым! Как Optional притворялся View и к чему это привело.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.6K
Комментарии 16

Responder Chain, или как правильно передавать действия пользователя между компонентами

Блог компании ПСБ Разработка под iOS *Разработка мобильных приложений *Swift *

Эту статью я решил написать под впечатлением от выступления Евгения Ртищева (@katleta) на конференции Mobius. Так же как и в его докладе, в этой статье я хочу показать, как можно, используя подзабытые нативные средства iOS, без труда выполнять простые и очень частые задачи.

Я расскажу о том, как предельно легко перенаправлять действия пользователя внутри приложения без ненужных усложнений — с помощью нативного инструмента под названием Responder Chain.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.9K
Комментарии 0

Вертел я ваши UIView

Блог компании Skyeng Разработка под iOS *Разработка мобильных приложений *

Эта статья является логическим продолжением UIKit ты вообще про UI?
Если вы ее пропустили, рекомендую сначала ознакомиться с ней. На всякий случай напоминаю, что весь графический интерфейс – это ответственность слоев (не вью!).

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

Сегодня я не буду подробно разбирать проективную геометрию, глубокие математические обоснования и принципы работы с матрицами. Надеюсь, что вы либо уже знакомы с этим, либо можете разобраться в этом сами. Я постараюсь объяснить все так, чтобы было понятно даже тем, кто видит все эти ужасные слова впервые. 

Давайте разберемся, как работают трансформации, постараемся понять подходы к ним и найти закономерности. Для того, чтобы начать погружение в трансформации, стоит для начала разобраться с контекстом. Ведь мы не просто рисуем карандашом на листе бумаги, мы управляем объектами в виртуальном мире. Сделаю небольшую оговорку – на самом деле все это очень сложные технические процессы (шедевры инженерной мысли), разобраться в которых за 15 минут не получится. Поэтому я буду умышленно упрощать некоторые вещи для того, чтобы сформировать общее понимание.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 2.6K
Комментарии 5

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

Блог компании Productivity Inside Разработка под iOS *Разработка мобильных приложений *Разработка под Android *
В нашем новом дайджесте перевод C++ в Swift и модуляризация доменного слоя, разбор истории с невыполненным звонком в 911 и шаблонизация кода, инструменты для снятия логов, игры-миллиардеры 2021, курс “Введение в робототехнику” и многое другое!

Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 2.3K
Комментарии 1

Модуляризация доменного слоя в UDF

Блог компании inDriver Программирование *Разработка под iOS *Разработка мобильных приложений *Swift *

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

Однако вопрос модуляризации доменной логики заслуживает отдельной статьи. Под катом я рассмотрю, как в UDF можно разбить доменный слой на небольшие независимые части и заставить их работать в рамках одного приложения. Но для начала немного определюсь с терминами. Прошу под кат!

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 780
Комментарии 2

Тащите меня семеро, или D'n'D в iOS

Блог компании 65apps Разработка под iOS *Swift *

Привет, Хабр! Меня зовут Никитин Алексей, я iOS разработчик в компании 65apps. Хорошо было бы порассуждать о Dragon and Dangerous, но нет. Речь пойдет о перемещении объектов. Перетаскивание как внутри одного приложения, так и между разными — с точки зрения пользователя вещь обыденная. Но под капотом механизма D'n'D в современных приложениях могут скрываться разные варианты решения. О них и поговорим.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 2.7K
Комментарии 3

Инструменты для снятия логов с Android / iOS-устройств. Чтение и разбор

Блог компании Альфа-Банк Тестирование IT-систем *Разработка под iOS *Разработка под Android *Тестирование мобильных приложений *

Привет! Сегодня стартует наш четвертый митап для тестировщиков, QAчественное общение. До 18:00 МСК на него все еще можно зарегистрироваться. А пока мы начинаем выкладывать доклады с предыдущего митапа, и начинаем с Ольги, старшего QA-инженера в компании red_mad_robot.

Поговорим про мобильные устройства и про снятие логов с этих мобильных устройств, почитаем их и разберем, как вообще с ними работать.

Читать далее
Всего голосов 16: ↑13 и ↓3 +10
Просмотры 2.6K
Комментарии 0

Делись и больше не дерись: ограничения и сложности в разработке Share Extension

Разработка под iOS *Разработка мобильных приложений *Swift *
Tutorial

Привет! На связи iOS-разработчик KODE — Семён Медведев. Наша команда разрабатывает крутые цифровые продукты для государства и бизнеса, в том числе мобильные приложения.

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

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

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 473
Комментарии 0

Опыт использования блиц-приложений для автоматизации подключения к Wi-Fi

Блог компании Beacon-connect Open source *Разработка под iOS *Разработка мобильных приложений *
Recovery mode
Благодаря iOS 14 у мобильных разработчиков появился удобный инструмент блиц-приложения (App Clips). По своей сути это тизеры мобильных приложений, которые позволяют оценить сервис без необходимости его скачивания на устройство.

Мы решили протестировать App Clips в рамках своей работы, и убедились в том, что они открывают массу новых возможностей. К примеру, в приложении Quickin мы реализовали:

  • сохранение настроек доступа к закрытым локальным сетям при помощи одного касания;
  • регистрацию пользователей в системе Beacon-Connect без установки дополнительных приложений;
  • предоставление карточек визитниц сервисов через блиц-приложения.

История разработки приложения Quickin


В предыдущих публикациях мы рассказывали об основной пользе интеграции нашей разработки Beacon-Connect с чат-ботами и мобильными приложениями. Приложение Quickin это логическое продолжение данной идеи, которое представляет собой браузер разрозненных сервисов.
Читать дальше →
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 776
Комментарии 2

Как переиспользуемый провайдер данных помогает сократить код в iOS-приложении

Блог компании ПСБ Разработка под iOS *Разработка мобильных приложений *Проектирование и рефакторинг *Swift *

В мобильных приложениях табличные экраны занимают значительное место в общем объёме интерфейса. Это происходит благодаря их возможности отображать большое количество контента. Но есть и обратный эффект — программирование таких экранов порождает много однотипного кода.

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

Вне зависимости от того, какую архитектуру (MVC, MVVM, VIPER и др.) вы используете, компоненты из этой статьи помогут сократить время разработки, поиска и исправления ошибок и добавления нового функционала.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 1K
Комментарии 3

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

Блог компании Productivity Inside Разработка под iOS *Разработка мобильных приложений *Разработка под Android *
В этой подборке протоколы Swift и дружба с Google Ассистентом, работа с цветами и изображениями, экспоненциальные навыки и годы тестирования, новый Flutter, доходы приложений, эмодзи 2021 и многое другое!

Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 2K
Комментарии 0

AppCode 2021.3: акторы, редактор plist-файлов, улучшенная поддержка документации и многое другое

Блог компании JetBrains Разработка под iOS *Разработка мобильных приложений *Xcode *Swift *

Всем привет! 

Вышел AppCode 2021.3, а значит, пора о нем рассказать. 

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 1.8K
Комментарии 14

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

Блог компании Productivity Inside Разработка под iOS *Разработка мобильных приложений *Разработка под Android *
В очередной нашей подборке — лучшие приложения 2021 от App Store и Google Play, управление памятью и дело об исчезнувшем покрытии кода, Unity со всех сторон, геймдизайн, адвент задачи для программистов и многое другое!

Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 2.2K
Комментарии 1

Swift. Сборка данных из разных запросов

Разработка под iOS *Разработка мобильных приложений *Swift *

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

Эти данные мы не можем собрать по ряду определенных причин в рамках одного запроса, поэтому нашей задачей является выполнить несколько запросов и после того, как все они выполнятся (мы получим данные), произведем какие-либо действия. Выполнять действия до получения всех данных нельзя, порядок получения данных нам неизвестен т.к. это асинхронные операции и объем данных так же неизвестен, как и скорость сети и т.д. думаю, в пояснении не нуждается...

Прочитать
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 1.4K
Комментарии 9

Вклад авторов

Работа

iOS разработчик
78 вакансий
Swift разработчик
108 вакансий