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

Swift *

Открытый объектно-ориентированный язык

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

Разбор задачи A отборочного этапа Yandex Cup 2023 — iOS

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

Недавно закончился отборочный этап Yandex Cup для разработчиков по различным направлениям, одним из которых была мобильная разработка под iOS. Как раз про нее и поговорим, а точнее про задания, которые были там представлены. Стоит отметить, что их сложность выше среднего, по этой причине, думаю, каждый подчеркнет для себя что-нибудь новое. Хотелось бы сразу сказать о том, что некоторые используемые конструкции/инструменты языка/фреймворков были для меня не новы, но в жизни встречался с ними редко, поэтому приходилось читать и на практике воспроизводить код из условия, экспериментируя с ним. Правильных ответов у меня не было, и решал я уже после окончания отборочного этапа. Если заметите какие-либо неточности в формулировках, в размышлениях, в ответах, буду рад обсудить это в комментариях.

Приступим! :-)

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии3

Можно ли обойтись без нативных языков, разрабатывая на Flutter и RN?

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

Привет! Меня зовут Дима, я разрабатываю мобильные приложения на Flutter в Пиробайт. Все чаще мне приходится сталкиваться с задачами, в которых требуется обращение к нативному API устройства.

Пакетов на pub.dev для решения этих задач мне всегда хватает. Но бывают моменты, когда пакет работает не так, как надо, либо требует сложной настройки для работы. Поэтому я стал заглядываться на изучение нативных языков, дабы уметь внедрять их в проект и не зависеть от других пользователей, которые пишут пакеты на Flutter (или хотя бы знать, как исправлять за ними ошибки в коде).

Передо мной встала дилемма — будет ли время, затраченное на изучение нативки, стоить того, чтобы избавиться от некоторых недостатков кроссплатформенной разработки? Или можно обойтись без этого? Ниже я расскажу, к какому выводу пришел за время своей работы.

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

Как использовать нативный платежный сервис SberPay в кроссплатформенном приложении на Flutter

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

Всем привет! Это Мурат Насиров и Артем Баркалов, мы Flutter-разработчики в Friflex. Разрабатываем высоконагруженные мобильные приложения для бизнеса и специализируемся на Flutter. В этой статье мы собрали большую часть кейсов, с которыми вы можете столкнуться при интеграции кнопки оплаты SberPay в приложении на Flutter. Это поможет вам понять механику работы СберПэй и шаги, которые необходимо сделать для передачи событий из натива во Flutter.

Использование SberPay SDK в продакшене требует наличия установленного приложения «Сбербанк Онлайн» (СБОЛ), иначе в процессе оплаты произойдет ошибка. Тестирование можно проводить на симуляторе iOS и на реальном устройстве. На эмуляторе Android тестирование не выйдет — при попытке оплаты возникает ошибка. Разработчики SDK используют аппаратные возможности смартфонов: геолокацию, bluetooth, Wi-Fi для снижения вероятности совершения мошеннических операций (условный антифрод).

Первым делом разработчик узнает от Сбербанка (по договору о подключении SberPay SDK в приложение), логин/пароль (credentials) и ссылку, которые указываются в файле build.gradle проекта (приложения) в части Android для получения библиотеки. Либо отдельно запрашивается aar-бандл. Для подключения SDK на iOS выдадут отдельную ссылку на репозиторий, хотя он публичный

Вместе с данными для получения SDK выдают тестовые данные для регистрации заказа в шлюзе Сбера, а также специальные apiKey и merchantLogin, которые используются для инициализации SberPay SDK в вашем приложении. Тестовые данные не подходят для проверки списания реальных денежных средств с реальной карты, они исключительно для тестирования.

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

Keyboard Layout Guide

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

При разработке приложений для iOS мы часто сталкиваемся с проблемами, когда клавиатура iPhone выдвигается вверх и закрывает UITextField / UITextView

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

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

До iOS 15 было несколько способов решить проблему когда клавиатура перекрывает UITextField / UITextView или другие элементы.

Можно было вынести в свойство или аутлет нижний констрейнт перекрываемого элемента. Подписаться на уведомления.

Читать далее
Рейтинг0
Комментарии7

Истории

SwiftUI: от сомнений к успешному внедрению

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

Всем привет, меня зовут Фарид Хусаинов, я тим-лид команды мобильной разработки Банки.ру. Мы делаем iOS-приложения компании Банки.ру, а именно – наше основное приложение и приложение, посвященное страхованию.

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

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии9

Готов ли Swift OpenAPI Generator для продуктивного кода?

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

Привет! Меня зовут Андрей, я iOS-разработчик приложения «Пункт Ozon». С помощью него сотрудники пунктов выдачи Ozon выдают посылки, принимают возвраты, проводят инвентаризации. 

Мы хотим упростить работу с OpenAPI-спецификациями, внедрив кодогенерацию для автоматического создания кода на Swift из YAML- или JSON-файла спецификации. Это позволяет автоматизировать создание DTO, сделать их единообразными и повысить эффективность разработки. Кодогенератор также упрощает сетевой слой, генерируя методы API, наборы параметров, заголовки и т.д.

На WWDC `23 Apple представила свой Open Source-генератор Swift OpenAPI Generator, который как раз и решает эту задачу. Давайте рассмотрим, готов ли в текущем виде Swift OpenAPI Generator для решения нашей проблемы.

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

Архитектура SwiftUI + VIPER: модульный подход к разработке iOS‑приложений

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

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

И ни капельки UIKit и другой темной магии..

Читать далее
Рейтинг0
Комментарии2

Скорее жив, чем мёртв: тенденция по развитию iOS технологий

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

Подготовьте кружечку чая, запаситесь терпением и дочитайте всю статью до конца.

После 24 февраля 2022 года, события в iOS разработке начали меняться не в лучшую сторону. Приложения "крупных" компаний удаляются из App Store (пример Сбербанк, Альфа банк, ВТБ, Тинькофф). Кажется, что iOS разработчики становятся в России не актуальными, а количество Flutter разработчиков увеличивается. Так что же нас ждет? Неужели придется учить Kotlin, или вообще уходить в C++?

Читать далее
Всего голосов 18: ↑17 и ↓1+16
Комментарии4

Книги по Swift и iOS-разработке для начинающих специалистов и профессионалов

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

iOS-разработка не теряет актуальности, и количество программистов, которые создают приложения для iOS, не снижается. В России можно приобрести несколько хороших книг, которые помогут начинающим получить больше теории и практики, а профессионалам — дополнить свои навыки. Подборка книг — под катом.

Читать далее
Всего голосов 18: ↑17 и ↓1+16
Комментарии8

Что мобильным разработчикам расскажут на Mobius 2023 Autumn: от Compose и SwiftUI до компьютерного зрения

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

Близится очередная конференция Mobius, и пришло время представить Хабру её программу.

Суть прежняя: тут есть доклады и по iOS-разработке, и по Android, и по кроссплатформенным технологиям вроде Flutter. И про свежие тренды (вплоть до шлема Apple Vision Pro), и про более фундаментальные вопросы вроде архитектурных.

А что конкретно будет? Собрали под катом описания всех докладов, разделив их на тематические блоки.

Программа Mobius 2023 Autumn
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

WidgetKit в iOS — не просто большие иконки

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

Меня зовут Даша, я iOS-разработчик в Surf. Сегодня я освежу в вашей памяти философию и design виджетов. Подсвечу технические аспекты, которые помогут, если вы собираетесь делать свой первый виджет или хотите вдохнуть жизнь в старый. А ещё затрону несколько неочевидных, но важных тем.

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

Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений

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

Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений

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

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

Собери сам: Набор для разработки на SwiftUI

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

Хотели когда-нибудь попробовать SwiftUI? А может быть вы как раз искали ресурсы для изучения? Может быть у вас есть Macbook и вам абсолютно нечем заняться на ближайших выходных? Если вы кто-то или что-то из вышеперечисленного, то эта статья для вас.

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

Пора в бой!
Всего голосов 3: ↑0 и ↓3-3
Комментарии0

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

Универсальные датасорсы в iOS-разработке

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

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

Универсальные датасорсы предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных. Они обеспечивают абстракцию, которая дает разработчикам возможность работать с данными в коллекциях независимо от их происхождения или формата хранения. Это позволяет легко изменять источник данных, добавлять новые функции и поддерживать разные типы данных в приложении.

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

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

CD-диск на шейдерах и NameDrop в iOS 17

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

Шейдеры отлично подходят для симуляции материалов. В обычных интерфейсах мы управляем только цветом, но эффект размытия в iOS — пример материала, который совершил революцию в мобильных интерфейсах.

Описать метериал через шейдер сложно, а создать динамичный эффект — ещё сложнее. В этой статье разберём пару примеров: переливающийся диск и нашумевший NameDrop в iOS 17.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии1

Руководство по Использованию Многопоточности в Swift

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

Многопоточность в Swift играет критически важную роль в создании отзывчивых и эффективных приложений. В этой статье мы рассмотрим, когда и как использовать новые возможности многопоточности в Swift, включая async/await, Task и структурированную многопоточность.

Читать далее
Рейтинг0
Комментарии3

UI Testing in Swift with XCTest framework

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

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

Читать далее
Рейтинг0
Комментарии0

@ViewBuilder Что? Зачем? Когда?

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

@ViewBuilder Что? Зачем? Когда? SwiftUI, iOS

Разбор назначения, ограничений и рациональность применения конструктора представлений @ViewBuilder.

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

Установка Swift на Windows. Изолента, клей, cmd

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

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

Читать далее
Всего голосов 14: ↑11 и ↓3+8
Комментарии6

Есть ли смысл начинать писать мобильное приложение не на Kotlin Multiplatform и Compose Multiplatform?

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

Всем привет! Меня зовут Борис Вербицкий, и я представитель того редкого типа iOS разработчиков, которые тепло относятся к Kotlin Multiplatform Project и рады появлению Compose Multiplatform. Здесь я решил поделиться своим опытом использования этих технологий, а также кое-какими размышлениями вокруг процессов с такой разработкой. Цель этой статьи - это поднять обсуждение предложенного мной подхода, послушать все за и против в комментариях.

Приятного чтения!

Читать далее
Всего голосов 13: ↑9 и ↓4+5
Комментарии25