Привет, Хабр. Мы уже сравнивали натив и PWA в этой статье, но без кроссплатформы эта картина действительно была неполной. Поэтому мы запарились, разложили разработку на этапы и на каждом нашли честные плюсы и минусы каждой технологии. Погнали.
Разработка под iOS *
Популярная мобильная ОС
Vivaldi 7.0 для iOS
Давайте углубимся в новые функции, каждая из которых разработана для того, чтобы дать вам больше контроля над вашим мобильным браузером. Вот что нового:
Тактильный отклик в мобильных приложениях: что это такое, когда использовать и зачем?
В этой статье я вам расскажу, что такое тактильная обратная связь, как и для чего она применяется. Раньше устройства сообщали нам о чём-то с помощью звуков и света, например, когда телефон звонил или мигал. Что поменялось с тех времен? В этой статье расскажу.
Swift TaskGroup на примерах
В данной части из серии swift concurrency мы продолжим исследовать structured concurrency. В этот раз остановимся на сущности под названием TaskGroup
. Узнаем как с ней работать и чем она отличается от Task
и async let
. На примере сравним аналогичные реализации с и без TaskGroup и разберем некоторые (не для всех очевидные) моменты при работе с данной сущностью.
Истории
Мобильная разработка за неделю #561 (21 — 27 октября)
Азартная разработка iOS приложения игры 2048 с ChatGPT
Я хочу поделиться с вами опытом создания "с нуля" iOS приложения известной игры 2048 с элементами ИИ (искусственного интеллекта) в SwiftUI с помощью ChatGPT .
Мне хотелось написать игру 2048 именно на SwiftUI, пользуясь его прекрасной и мощной анимацией и приличным быстродействием , a также предоставить в распоряжения пользователя не только “ручной” способ игры, когда Вы руководите тем, каким должен быть следующий ход: вверх, вниз, влево и вправо, но и ряд алгоритмов с оптимальной стратегией (метода Монте-Карло, стратегий поиска по деревьям (Minimax, Expectimax) ), позволяющих АВТОМАТИЧЕСКИ выполнять ходы - вверх, вниз, влево и вправо - и добиться плитки с числом 2048 и более (эти алгоритмы и называют алгоритмами “искусственного интеллекта” (ИИ).
2048 - это очень известная игра, и мне не нужно было объяснять ChatGPT ее правила, он сам всё про неё знает. Кроме того, оказалось, что ChatGPT прекрасно осведомлен об ИИ алгоритмах для игры 2048, так что мне вообще не пришлось описывать ChatGPT контекст решаемой задачи. И он предлагал мне множество таких неординарных решений, которые мне пришлось бы долго выискивать в научных журналах.
Полный протокол взаимодействия с ChatGPT при создании iOS приложения игры 2048 представлен в 3-х постах на моем сайте:
iOS приложения игры 2048 в SwiftUI с ChatGPT 4-o. Часть 1. Введение. Логика игры 2048.
iOS приложения игры 2048 в SwiftUI с ChatGPT 4-o. Часть 2. Анимация и UI.
iOS приложение игры 2048 в SwiftUI с ChatGPT. Часть 3. ИИ (AI) для игры 2048.
А код находится на GitHub. В этой статье я представляю лишь отдельные фрагменты этого протокола, чтобы вы могли почувствовать, насколько полезным может быть ChatGPT как при разработки, так и при обучении.
iOS 18 для разработчиков: Ключевые изменения в UIKit
Привет! Меня зовут Лена, я работаю iOS-разработчиком в KTS. Недавно вышла новая версия iOS 18, и я решила подробно изучить все нововведения, чтобы понять, какие новые возможности она предлагает разработчикам.
В этой статье расскажу о самых интересных обновлениях в UIKit — новый TabBar, анимации, совместимость UIKit/SwiftUI и многое другое, а также поделюсь своими впечатлениями от их практического применения.
Изменение модели данных CoreData для iOs приложения с iCloud синхронизацией
Казалось бы простая задача добавления атрибута(ов) в модель данных CoreData может обернуться проблемами если в приложении используется синхронизация между устройствами через iCloud. В этом случае необходимо провести так называемую lightweight миграцию прежней базы данных в базу данных с новой моделью иначе синхронизация перестанет работать, что чревато в дальнейшем потерей данных при их восстановлении из iCloud. Здесь предлагается пошаговая инструкция как это сделать легко и безопасно на примере моего приложения для учета финансов, которым ежедневно пользуется несколько тысяч пользователей, поэтому к сохранности данных подход должен быть серьезный
Итак, поехали!
Создадим команду Wild Politics вместе
Здравствуйте, Хабровчане!
Мой предыдущий пост "Как потратить шесть лет и быть невидимкой в Play Market" собрал пусть и не рекордные, но всё-таки 13 тысяч просмотров, благодаря чему в мой пет-проект заглянуло много новых лиц. Я благодарен вам за внимание к игре, отзывы и критику.
Оптимизация. Планируется в самое ближайшее время. Многие вещи в игре делались ещё тогда, когда я только начинал изучать фреймворк Django и в целом веб-разработку. Сейчас опыта у меня прибавилось, и ко многим вещам я возвращаюсь, чтобы переработать их более вдумчиво.
Обучение. По отзывам многих людей, оно обрывается слишком резко, не даёт понимания, чем можно заняться в игре, банально не затягивает. Планирую переработать его так, чтобы игрок в процессе обучения сразу мог прикоснуться к функционалу управления страной, пусть это и будет страна-"заглушка" (никакой реальной политики!), а в конце, проведя по всем аспектам игры, показать итоговое "окно возможностей", где резюмировать всё то, чем уже можно заняться в игре.
Доступность в Play Market. Вероятнее всего, игру не видно в поиске, в первую очередь из-за того, что она находится на стадии пре-регистрации. Также, ранее слабой была ASO-оптимизация страницы игры (буквально мало "ключевых слов" в тексте описания). Полагаю, ситуация изменится с выходом игры в публичный доступ. Но уже сейчас она собрала более 200 заявок на предварительное скачивание.
Прежде чем публиковать игру для "миллиардов пользователей Google Play", я планирую завершить перевод игры на анг
Области тьмы: разбираем неочевидные моменты при использовании памяти в Swift
Привет, Хабр! Это Александр, iOS Developer из Clevertec. Об управлении памятью в Swift написано уже много и хорошо. Но я предлагаю копнуть с другой стороны и попытаться собрать недостающие детали пазла.
Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя
Всем привет! Меня зовут Сергей, и я работаю разработчиком мобильных приложений. Также мы с ребятами развиваем международное комьюнити Coffee&Code, а сам я частый гость на встречах в Санкт-Петербурге.
Хочу поговорить о теме, которая волнует многих разработчиков: использование старых технологий в iOS-разработке, таких как Objective-C. Тут возникает очень насущный вопрос, являются ли он легаси?
Внедряем снепшот-тестирование, или пять стадий принятия неизбежного
Привет, Хабр! Меня зовут Дмитрий Сурков, я iOS-разработчик приложения для среднего и малого бизнеса ПСБ. У нас есть практика проводить технические дни, на которых мы вносим улучшения в наше приложение. Одним из таких улучшений оказалось внедрение снепшот-тестов для компонентов дизайн-системы. В статье расскажу, как мы прошли все стадии принятия и обрели покой и умиротворение.
Макросы в Swift: Практическое руководство по использованию
Недавно я столкнулся с задачей, которая требовала написания большого объема шаблонного кода. Вспомнив, что в Swift 5.9 появились макросы, созданные специально для генерации шаблонного кода, я решил попробовать их в действии. Ранее я работал с макросами в Objective-C и C++, поэтому ожидал увидеть нечто похожее. Однако, поискав информацию, я понял, что макросы в Swift — это совсем другое, не похожее на то, что я встречал в других языках.
В отличие от макросов в C++ или Objective-C, в Swift нужно писать гораздо больше кода, соблюдая при этом строгие правила оформления. Иначе можно столкнуться с загадочными ошибками компиляции, решение которых не всегда очевидно. Дополнительные трудности возникают из-за того, что многие статьи и видео просто повторяют официальную документацию, не объясняя понятным языком, как именно использовать макросы. Часто вместо этого начинаются сложные рассуждения о структуре AST (Abstract Syntax Tree) или приводятся примеры кода, которые демонстрируют результат работы макроса, но не показывают, как его создать и отладить.
Именно из-за таких трудностей я решил написать эту статью. Её цель — максимально просто, без углубления в теорию, объяснить, как можно уже сегодня начать использовать макросы в Swift. Если вам захочется изучить эту тему подробнее, вы всегда сможете обратиться к официальной документации или материалам с WWDC, где этот вопрос разобран более детально. А если вам понравится моя подача, пишите в комментариях — я постараюсь объяснить сложные моменты в отдельных статьях.
Ближайшие события
Осторожно, Combine! Откуда берутся утечки памяти, потеря эвентов, нестабильность операторов и что с этим всем делать
Привет, меня зовут Никита, я iOS‑разработчик в Яндекс Диске. В прошлый раз я рассказывал, как мы начали свой путь в SwiftUI. Теперь настало время рассказать ещё об одном фреймворке, который мы затащили в свой проект параллельно со SwiftUI, — Combine.
В этой статье разберу проблемы, с которыми столкнулась наша команда, расскажу, как их исправили, а также к каким выводам после этого пришли. А ещё поделюсь библиотекой с фиксами и экстеншенами к Combine.
История одного модального окна или переходим с UIKit на SwiftUI. Часть 2.1. Неожиданный баг Combine
В этой статье изначально планировала написать продолжение первой части статьи. А именно показать обещанные ProgressView и SkeletonView. Но тут на моём пути возникло неожиданное препятствие.
Обо всём по порядку.
Мы же понимаем, что просто так оставить View со всем функционалом внутри нельзя. Обычно я накидываю быстрый функционал и UI в одном классе, а затем уже разделяю. Использую MVVM архитектуру. И модальное окно не стало исключением. Проверив, что всё работает во View, я создала ViewModel, сделала её ObservableObject
Корзина в Додо Пицце на iOS 14: баг длиной в полгода
Как-то раз мы решили убрать таббар из приложения Додо Пиццы. Его элементы мы разложили по экранам, а корзину сделали плавающей. Её кнопка появлялась, когда пользователь что-то покупал, и сопровождала его, пока он не переходил в корзину.
Фидбэк был положительным, но не от всех пользователей — у владельцев айфонов на iOS 14 кнопка корзины просто не отображалась. Воспроизвести баг мы не смогли и решили проблему радикально: включили отображение кнопки на iOS 14 по умолчанию.
Но спустя пару месяцев я узнал, что тикет проблемы всё ещё открыт. Я решил его закрыть и погрузился в удивительный мир… Авито, воркэраундов и не только! В этой статье расскажу вам об этом приключении! Погнали!
Tuist: добавляем генерацию проекта в текущее приложение
Знаете, что объединяет всех iOS-разработчиков, работающих над крупными проектами? Все мы когда-то сталкивались с этим старым знакомым — файлом .xcodeproj, который хранит в себе десятки, а то и сотни конфликтов после каждого merge. Мы тоже жили с этой проблемой много лет, пока не нашли решение.
Знакомьтесь, Tuist — инструмент, который кардинально изменил наш подход к управлению проектами. Он не только помогает избежать конфликтов, но и автоматизирует генерацию ключевых компонентов, значительно облегчая команде жизнь.
Если у вас всё еще сохранился этот «реликт прошлого», то, возможно, наш опыт поможет вам наконец-то избавиться от него. Давайте разберемся, как это сделать.
Мобильная разработка за неделю #559 (7 — 13 октября)
Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
История одного модального окна или переходим с UIKit на SwiftUI. Часть 1
Всем добрый день. Хочу поделиться с вами проблемами постепенного внедрения SwiftUI в приложение, полностью написанное на UIKit, а так же моими вариантами их решения.
Как зеленый Леруа Мерлен стал желтым Лемана ПРО
В последнее время ну очень популярна стала такая вещь, как ребрендинг. Одни меняют лого и название. Другие, вдобавок к этому, еще и кардинально меняют цвета.
Популярность эта, однако, не сопровождается должным количеством технических статей, которые мне, как разработчику, наиболее интересны.
Будем это исправлять.
Всем привет! Меня зовут Слава. Я мобильный разработчик. И в этой статье я поделюсь своим уникальным опытом того, как Леруа Мерлен стал Лемана ПРО. Собственно, рассказывать буду про мобильную разработку 🤷🏽.
Вклад авторов
InlyIT 3124.4RoboForm 1915.9PapaBubaDiop 1803.0YourDestiny 1073.6phillennium 836.0alizar 751.9redmadrobot 652.0akaDuality 426.0krokhmalyuk 384.0