Как стать автором
Обновить
60.69

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

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

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

Как мы из России опубликовали платное приложение в App Store

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

Из России запуск платного приложения в App Store после 2022 года требует нестандартного подхода, но это вполне реальная задача. Главное — учитывать актуальные требования Apple, а также продумать стратегию монетизации.

Однако для нас усилия себя оправдали успешным запуском нашего приложения с монетизацией в App Store, несмотря на все ограничения и без переезда («релокации»). В этой статье я разберу правила, которые Apple ввела для разработчиков из РФ, и поделюсь пошаговым опытом, как преодолеть эту полосу препятствий.

Читать далее

Новости

Как мы сокращали размер JSONʼа в SDUI

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

Привет, хабрачитатели! Server-Driven UI (SDUI) — это подход, при котором сервер управляет отображением интерфейса на клиенте. Важное преимущество SDUI — возможность внедрять изменения без выпуска новых версий приложений. Но это же преимущество есть его недостаток, ведь передача всех данных по сети зависит от качества соединения и увеличивает объём данных. 

Качество связи мы не можем контролировать, а вот уменьшить количество передаваемой информации посредством сокращения JSON, — вполне.

Читать далее

Под капотом у пользовательского интерфейса SwiftUI — Детальный разбор: Часть 1 — UIKit

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

Как именно работает пользовательский интерфейс iOS-приложений под капотом? При работе с UIKit и SwiftUI разработчики часто фокусируются на их API, не вдаваясь в детали того, что происходит за кулисами. Однако глубокое понимание этих процессов помогает оптимизировать производительность, избежать неожиданных багов и проблем с отрисовкой интерфейса, а также разобраться в механике рендеринга.

В этой статье мы подробно разберём, как UIKit взаимодействует с Core Animation, как устроен Runloop, почему обновления интерфейса происходят не сразу после внесения изменений и какую роль играет Render Server.

Читать далее

Мобильная разработка за неделю #575 (10 — 16 февраля)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров926
В новом дайджесте дизайн-система в iOS за 5 минут и параллелизм в SQLite для Android, детские ошибки при сборке и дорожная карта перехода на KMP, ошибка во встроенных покупках ценой в Final Fantasy Crystal Chronicles, техосмотра автомобилей с помощью ИИ и многое другое. Подключайтесь!

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

Истории

О iOS дизайн системе за 5 мин

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

Всем привет, меня зовут Ибрагим, я iOS разработчик одной из команд мобильного банкинга и это моя первая статья для Хабра, поэтому прошу строго не судить.

Сегодня хочу рассказать Вам, как мы пилили  дробили монолит на SPM пакеты и создавали дизайн систему. 

Читать далее

Использование ChatGPT o3-mini и DeepSeek при создании iOS приложения Countries “Страны Мира”

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

Что делает «животворящая» конкуренция?

Появление DeepSeek, позволило бесплатным подписчикам ChatGPT получить доступ к «рассуждающей» ChatGPT o3-mini.

Я предложила этим двум ИИ создать довольно простое на первый взгляд тестовое iOS приложение Countries, которое показывает все страны Мира по регионам (Европа, Азия, Латинская Америка и т. д.) и для каждой страны её название и флаг, a также численность населения population, размер ВВП (валового внутреннего продукта) gdp и расположение страны на карте Мира.

Использовались данные Всемирного банка (World Bank), но мы не сообщали ИИ ни сайты, ни структуры данных, всё это ИИ должен найти сам и использовать их при создании iOS приложения.

Раньше я отдавала предпочтение Clause 3.5 Sonnet при создании iOS приложений, прибегая к ChatGPT 4.o1 для решения отдельных проблем. Но появление «рассуждающих» ChatGPT o3-mini и DeepSeek изменили всё.

iOS разработка поднялась на новый уровень, и пока лидером в этой гонке для меня является ChatGPT o3-mini (даже в бесплатном варианте). Он способен вас приятно удивить.

Читать далее

Мобильная разработка за неделю #574 (3 — 9 февраля)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.3K
В этой подборке рисуем карты с помощью Swift Charts и графики сна с помощью Compose, разбираемся с Swift Concurrency и плагинами Android Studio, бесплатными инструменты для создания иконок, трендами мобильных приложений и многим другим. Подключайтесь!

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

Сравниваю ChatGPT-4o и ChatGPT-o3-mini-high

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

В прошлой статье многие подметили некорректность сравнения Deepseek и ChatGPT-4o. Изначально идея была сравнить максимально доступные пользователю версии.

Но сперва всё же хочется посмотреть как с одной и той же задачей справляются разные версии ChatGPT. Я в прошлом году делала анимацию (да, мне прям нравится по выходным, когда отдыхаю, кодить что-то максимально ненапряжное), так вот я её сделала в ChatGPT-4o.

Не сказать, что я прям получила удовольствие, скорее наоборот, выбесилась знатно. А на этой неделе решила её повторить уже с ChatGPT-o3-mini-high. Разница, конечно, колоссальная. Но обо всём по порядку.

Читать далее

Что мы делали в 2024-м? Видео — бесплатно и без регистрации

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


Что может быть лучше, чем оглянуться и вспомнить, как команды разработчиков, бизнес-аналитиков и тестировщиков Surf провели прошедший год? Предлагаем погрузиться в то, как мы творили, экспериментировали, добивались результатов и делились ими со всеми желающими.  

Будет много видео 😁

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

Современные подходы к управлению UI: low-сode & Backend-Driven UI

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

Привет, меня зовут Михаил Шевченко. В Авито я проектирую и разрабатываю backend low-code платформы Bricks. В этой статье рассказываю о том, почему в Авито было принято решение развивать собственные low-code-решения и Backend-Driven UI, объясняю их устройство и делюсь достигнутыми результатами.

Читать далее

Обновления в Swift Concurrency: что нас ждёт в Swift 6

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

Привет, Хабр! Меня зовут Никита, я занимаюсь iOS-разработкой в Яндекс Диске. Как вы знаете, прошлой осенью зарелизился Swift 6, а вместе c ним появились и строгие проверки для защиты от датарейсов, связанные со Swift Concurrency.

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

Читать далее

Sheet с автоматическим подсчётом высоты и поддержкой iOS 15

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

В этой статье я расскажу о том, как создать нативный Sheet, который автоматически подсчитывает свою высоту в зависимости от котента (SwiftUI View). Задача была в том, чтобы решение было c минимумом костылей и сохраняло поддержку iOS 15. Готового похожего решения мне не удалось найти, поэтому решил создать свой вариант.

Читать далее

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1K
В новом дайджесте рассказываем о том, как Android управляет памятью, и смотрим под капот потокам, объясняем нюансы разработки PWA для Банка и программируем открытиями, исследуем удаление приложений в 2024 году, смешиваем цвета, ищем путь к стабильности и многое другое. Подключайтесь!

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

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

Потоки под капотом: как работают многопоточность и синхронизация в iOS

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

Привет! Я Александр Сычев, iOS‑эксперт в KTS. В этой статье поговорю о потоках.

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

В данной статье мы рассмотрим детали этой темы, а именно:

проанализируем работу потоков;

выявим скрытые механизмы, обеспечивающие их функционирование;

определим, какую пользу практикующим iOS‑разработчикам приносит понимание внутреннего устройства потоков.

Читать далее

Сравнение кода от DeepSeek и ChatGPT

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

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

Я решила дать два задания. Начнём с первого: нужно написать игру "Змейка", вот мой промпт:

Если лень читать - в конце ссылка на короткое видео сравнения (в телеграм канале).

Читать далее

Vivaldi 7.1 для Android и iOS — стрельба дуплетом

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

Всем привет!

Не прошло и недели (вообще-то прошло), а мы уже выпускаем новый стабильный релиз Vivaldi 7.1 сразу для двух платформ - для Android и iOS. Возможно, это не очень хорошая идея - смешивать две аудитории читателей, но мы решили просто показать пользователям двух довольно разных платформ, что на самом деле не такие уж они и разные. По крайней мере, у себя в Vivaldi мы стараемся эту разницу максимально убрать. Хотя она ещё и имеется, но об этом - чуть ниже.

Читать далее

Путь к стабильности: как мы снизили потребление оперативной памяти в iOS-приложении

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

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

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

Читать далее

CI для мобильной разработки или как мы используем fastlane

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

Хороший CI/СD — залог успешной реализации и быстрой выкатки проектов команды. Но нам приходилось поддерживать две версии CI и делать много ручной работы при обновлениях.

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

Реализовать такой CI получилось с использованием fastlane. В статье я расскажу, что мы сделали и каких результатов удалось достичь.

Читать далее

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.3K
В новом выпуске распознавание номеров телефонов для пикника и первая бета Android 16, не всеобъемлющее руководство по тестированию пуш-уведомлений и 5 лет React Native в Shopify, технический гайд по сторис, годовой отчет “Состояние мобильного рынка в 2024 году” от Sensor Tower и многое другое. Подключайтесь!

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

Вызов защищенного API из iOS-приложения на Swift

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

Пошаговое руководство по использованию OAuth 2.0 при доступе к защищенным API из iOS‑приложения на Swift с Auth0.

Читать далее
1
23 ...