Как работать со Swift Data и Core Data в фоновом режиме
Хотя SwiftData намного проще в настройке, фреймворк унаследовал многие проблемы Core Data (включая те, которые останавливали многих разработчиков от использования Core Data в своих приложениях).
Одна из самых больших проблем — управление моделями в различных контекстах. Модели Swift Data и Core Data небезопасно использовать совместно в разных потоках (они не Sendable и не thread-safe). Apple даже указывает на это в своем руководстве.
📖 Пол в своем блоге рассматривает эту проблему с различных сторон и приводит свой вариант решения с использованием одного контейнера и выполнением всей нужной работы в бэкграунде.
Большой гайд по работе со Swift Data есть в нашем канале и вот тут.
😃 iOS Dev
Хотя SwiftData намного проще в настройке, фреймворк унаследовал многие проблемы Core Data (включая те, которые останавливали многих разработчиков от использования Core Data в своих приложениях).
Одна из самых больших проблем — управление моделями в различных контекстах. Модели Swift Data и Core Data небезопасно использовать совместно в разных потоках (они не Sendable и не thread-safe). Apple даже указывает на это в своем руководстве.
📖 Пол в своем блоге рассматривает эту проблему с различных сторон и приводит свой вариант решения с использованием одного контейнера и выполнением всей нужной работы в бэкграунде.
Большой гайд по работе со Swift Data есть в нашем канале и вот тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
Рисование кастомных фигур в SwiftUI: примеры и код
В SwiftUI Shape-протокол опредеяет контур нашей вью.
Он используется для рисования и проектирования своих собственных фигур или контролов разной сложности
📖 В этом материале можно познакомиться с созданием не только простых вещей (вроде треугольников), но и с гораздо более интересными примерами с анимациями.
😃 iOS Dev
В SwiftUI Shape-протокол опредеяет контур нашей вью.
Он используется для рисования и проектирования своих собственных фигур или контролов разной сложности
📖 В этом материале можно познакомиться с созданием не только простых вещей (вроде треугольников), но и с гораздо более интересными примерами с анимациями.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работать с passkeys в iOS-приложении
Passkeys используются для аутентификации пользователей без использования пароля (после WWDC 23 Apple даже добавила фразу:
Сама пара public + private ключ создается каждый раз при генерации новой учетки.
Чтобы получить доступ к контенту пользователи могут использовать PIN-код или биометрию.
📖 Здесь есть полезный материал о том, как настроить passkeys в вашем приложении и пример реализации на github.
😃 iOS Dev
Passkeys используются для аутентификации пользователей без использования пароля (после WWDC 23 Apple даже добавила фразу:
При использовании passkey с сервера нечего красть
).Сама пара public + private ключ создается каждый раз при генерации новой учетки.
Чтобы получить доступ к контенту пользователи могут использовать PIN-код или биометрию.
📖 Здесь есть полезный материал о том, как настроить passkeys в вашем приложении и пример реализации на github.
Please open Telegram to view this post
VIEW IN TELEGRAM
Проектирование сетевого слоя в iOS
Конечно, идеального решения не существует.
Но есть несколько хороших примеров (отправных точек) для создания модульного, расширяемого и тестируемого сетевого слоя в iOS.
В двух больших статьях автор рассказывает о своём подходе к реализации на примерах:
📖 Проектирование API-клиента (создание запросов, пример реального варианта использования, авторизация + логирование).
📖 Вторая часть посвящена модульным и интеграционным тестам.
😃 iOS Dev
Конечно, идеального решения не существует.
Но есть несколько хороших примеров (отправных точек) для создания модульного, расширяемого и тестируемого сетевого слоя в iOS.
В двух больших статьях автор рассказывает о своём подходе к реализации на примерах:
📖 Проектирование API-клиента (создание запросов, пример реального варианта использования, авторизация + логирование).
📖 Вторая часть посвящена модульным и интеграционным тестам.
Please open Telegram to view this post
VIEW IN TELEGRAM
Отрисовка графики на Apple Vision с помощью Metal Rendering API
Материалов по Apple Vision Pro очень мало (а приложений чуть больше, но если вы что-то делали, поделитесь в комментариях, очень интересно).
Когда дело доходит до рендеринга, большинство разработчиков выбирают уже известные игровые движки вроде Unity или высокоуровневые API Apple (чекайте
Однако есть и другой вариант, который был доступен с самого начала: создание собственного движка рендеринга с помощью Metal API.
Несмотря на сложность, такой подход позволяет получить полный контроль над конвейером рендеринга, вплоть до каждого байта.
Нашёл любопытную статью (которую сохранил и себе для будущих экспериментов), в которой рассматривается множество интересных моментов:
📖 Создание и настройка LayerRenderer.
📖 Vertex Amplification (и описание примеров с Vertex/Fragment шейдерами).
📖 Обновление и энкодинг для кадров.
📖 Поддержка стереоскопического и не-VR рендеринга дисплея.
📖 Рекомендации и советы.
Если сейчас это кажется не слишком актуальным, то через несколько лет, на мой взгляд, подобные устройства будут повсеместно (например, для медицины или работы с высокотехнологичными процессами в целом, да даже ремонтировать авто на продвинутых с сервисах с авто-подсказками чем не бизнес-идея).
😃 iOS Dev
Материалов по Apple Vision Pro очень мало (а приложений чуть больше, но если вы что-то делали, поделитесь в комментариях, очень интересно).
Когда дело доходит до рендеринга, большинство разработчиков выбирают уже известные игровые движки вроде Unity или высокоуровневые API Apple (чекайте
RealityKit
). Однако есть и другой вариант, который был доступен с самого начала: создание собственного движка рендеринга с помощью Metal API.
Несмотря на сложность, такой подход позволяет получить полный контроль над конвейером рендеринга, вплоть до каждого байта.
Нашёл любопытную статью (которую сохранил и себе для будущих экспериментов), в которой рассматривается множество интересных моментов:
📖 Создание и настройка LayerRenderer.
📖 Vertex Amplification (и описание примеров с Vertex/Fragment шейдерами).
📖 Обновление и энкодинг для кадров.
📖 Поддержка стереоскопического и не-VR рендеринга дисплея.
📖 Рекомендации и советы.
Если сейчас это кажется не слишком актуальным, то через несколько лет, на мой взгляд, подобные устройства будут повсеместно (например, для медицины или работы с высокотехнологичными процессами в целом, да даже ремонтировать авто на продвинутых с сервисах с авто-подсказками чем не бизнес-идея).
Please open Telegram to view this post
VIEW IN TELEGRAM
Что вы используете для хранения данных на клиенте (можно несколько вариантов)
Anonymous Poll
49%
Core Data
14%
SwiftData
22%
Realm
14%
SQLite
61%
UserDefaults
7%
Другое (напишу в комментариях)
ℹ️ Новое требование к обновлениям приложений в ЕС
Начиная с сегодняшнего дня, для отправки обновлений приложений в App Store на территории Европейского Союза (ЕС) владельцам аккаунтов или администраторам программы Apple Developer Program необходимо ввести статус трейдера в App Store Connect.
Если вы являетесь трейдером, вам нужно будет предоставить информацию о себе, прежде чем вы сможете отправить свое приложение на проверку.
Начиная с 17 февраля 2025 года, приложения без статуса трейдера будут удаляться из App Store в ЕС до тех пор, пока статус трейдера не будет предоставлен и проверен в целях соблюдения Закона о цифровых услугах.
Несколько рекомендаций по заполнению статуса - здесь.
😃 iOS Dev
Начиная с сегодняшнего дня, для отправки обновлений приложений в App Store на территории Европейского Союза (ЕС) владельцам аккаунтов или администраторам программы Apple Developer Program необходимо ввести статус трейдера в App Store Connect.
Если вы являетесь трейдером, вам нужно будет предоставить информацию о себе, прежде чем вы сможете отправить свое приложение на проверку.
Начиная с 17 февраля 2025 года, приложения без статуса трейдера будут удаляться из App Store в ЕС до тех пор, пока статус трейдера не будет предоставлен и проверен в целях соблюдения Закона о цифровых услугах.
Несколько рекомендаций по заполнению статуса - здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
И ещё одно нововведение (более приятное) в App Store Connect
Будет полезным для инди-разработчиков (и для команд маркетинга/оптимизации и так далее).
В sales и trends всегда была опция для статистики по приложениям за все время (lifetime), а вот в аналитике добавили только сегодня.
Можно отследить всё количество показов по приложениям, выручку, лайф-тайм краши и так далее. Полезно для составления отчётов и в целом любопытно посмотреть на то, какой путь проделало то или иное приложение.
🤩 Посмотреть можно на вкладке аналитики в списке пресетов.
😃 iOS Dev
Будет полезным для инди-разработчиков (и для команд маркетинга/оптимизации и так далее).
В sales и trends всегда была опция для статистики по приложениям за все время (lifetime), а вот в аналитике добавили только сегодня.
Можно отследить всё количество показов по приложениям, выручку, лайф-тайм краши и так далее. Полезно для составления отчётов и в целом любопытно посмотреть на то, какой путь проделало то или иное приложение.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какую минимальную версию iOS вы поддерживаете на вашем рабочем проекте?
Anonymous Poll
4%
18
6%
17
20%
16
35%
15
19%
14
16%
13 (или ниже)
Как начать использовать Swift Testing
📖 В этой статье автор делится своим взглядом на то, что нужно знать для начала работы с новым фреймворком Swift Testing.
Рассмотрены основные возможности Swift Testing (а ещё его отличия и улучшения по сравнению с XCTest).
📺 А вот здесь этот материал представлен в формате видео.
📖 Кстати, в канале есть ещё один вариант разбора отличий и преимуществ по сравнению с XCTest.
😃 iOS Dev
📖 В этой статье автор делится своим взглядом на то, что нужно знать для начала работы с новым фреймворком Swift Testing.
Рассмотрены основные возможности Swift Testing (а ещё его отличия и улучшения по сравнению с XCTest).
📺 А вот здесь этот материал представлен в формате видео.
📖 Кстати, в канале есть ещё один вариант разбора отличий и преимуществ по сравнению с XCTest.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как создавать привлекательные анимации
Люди все чаще выбирают инструменты, ориентируясь на общие впечатления, а не только на функциональность.
Приложение, которое делает то, что вы ждёте и так, как вы хотели бы видеть — вот что выделяет продукт.
В частности, это одна из основных причин, почему компании инвестируют в дизайн-инженеров.
Умение создавать приятные анимации — сложная задача (для которой нужен опыт и знания).
📖 Эмиль Ковальски рассказывает о таких анимациях, приводит примеры (не только для iOS-платформы) и даёт советы, как можно улучшить впечатление пользователей.
✅ В свою очередь, самыми интересными примерами я делюсь здесь.
😃 iOS Dev
Люди все чаще выбирают инструменты, ориентируясь на общие впечатления, а не только на функциональность.
Приложение, которое делает то, что вы ждёте и так, как вы хотели бы видеть — вот что выделяет продукт.
В частности, это одна из основных причин, почему компании инвестируют в дизайн-инженеров.
Умение создавать приятные анимации — сложная задача (для которой нужен опыт и знания).
📖 Эмиль Ковальски рассказывает о таких анимациях, приводит примеры (не только для iOS-платформы) и даёт советы, как можно улучшить впечатление пользователей.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Пока мы ждём выкатки API для разработчиков, некоторые счастливчики на бете успели потестить функциональность.
Похвалитесь, кто был в листе ожидания, получили ли доступ? В Европе пока все эти фичи (даже в бете) недоступны.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация переходов между view в SwiftUI
Transitions (или переходы) улучшают пользовательский опыт, делая взаимодействие более плавным и приятным.
При смене интерфейса визуально подчеркивается связь между различными элементами пользовательского интерфейса.
В качестве примеров, где используются такие анимации, можно привести:
🔘 Навигация между экранами.
🔘 Добавление (или удаление) элементов из списка.
🔘 Показ модальных вьюх.
📖 Разбор создания таких эффектов (и их комбинаций) можно почитать в этой статье.
🔗 В канале есть ещё и пример таких переходов с использованием Metal.
😃 iOS Dev
Transitions (или переходы) улучшают пользовательский опыт, делая взаимодействие более плавным и приятным.
При смене интерфейса визуально подчеркивается связь между различными элементами пользовательского интерфейса.
В качестве примеров, где используются такие анимации, можно привести:
📖 Разбор создания таких эффектов (и их комбинаций) можно почитать в этой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Комплексное руководство по работе с KeyPath в Swift
В мире Swift KeyPath - это мощная, но часто недооцениваемая функция.
Цель этой статьи — глубоко изучить функциональные особенности KeyPath, раскрыть возможности и помочь использовать её в процессе разработки.
📖 В материале описаны свойства, приведены примеры как читать/устанавливать значения через KeyPath и использовать KeyPath в качестве параметра.
5 вещей, которые вы могли не знать о KeyPaths можно проверить в этом посте.
😃 iOS Dev
В мире Swift KeyPath - это мощная, но часто недооцениваемая функция.
Цель этой статьи — глубоко изучить функциональные особенности KeyPath, раскрыть возможности и помочь использовать её в процессе разработки.
📖 В материале описаны свойства, приведены примеры как читать/устанавливать значения через KeyPath и использовать KeyPath в качестве параметра.
5 вещей, которые вы могли не знать о KeyPaths можно проверить в этом посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с таймерами в Swift
Таймеры в Swift используются постоянно: для планирования отложенных или повторяющихся задач.
В статье, затрагивающей моменты создания и работы с таймерами, автор напоминает несколько важных моментов:
🔘 Зачем вообще нужны таймеры в Swift.
🔘 Повторяющиеся (и не повторяющиеся) таймеры.
🔘 Как запланировать повторяющиеся задачи.
🔘 Что такое tolerance и как runloop modes влияют на работу таймера.
📖 В канале есть ещё один неплохой разбор таймеров (ведь как известно, даже Apple допускает ошибки).
😃 iOS Dev
Таймеры в Swift используются постоянно: для планирования отложенных или повторяющихся задач.
В статье, затрагивающей моменты создания и работы с таймерами, автор напоминает несколько важных моментов:
📖 В канале есть ещё один неплохой разбор таймеров (ведь как известно, даже Apple допускает ошибки).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация размытия экрана в режиме многозадачности
🔑 Повышение уровня конфиденциальности важно при разработке современных приложений (особенно мессенджеров или банковских приложений).
📖 В этой статье показан простой способ размытия контента, когда пользователь переходит в многозадачный (или фоновый режим).
😃 iOS Dev
📖 В этой статье показан простой способ размытия контента, когда пользователь переходит в многозадачный (или фоновый режим).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Пару лет назад я уже пробовал запилить нечто подобное в одном из чатов на комбинации эффектов частиц, но
В этом году под 31 октября я решил повторить опыт, уже с использованием Metal, и вышло, как мне кажется, гораздо лучше.
На видео не используются никакие текстуры, только натив.
Описал весь опыт, источники и привёл пример кода на Swift эксклюзивно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Разрешено ли у вас использовать ChatGPT (и аналоги) в компании?
Anonymous Poll
62%
Да (можно любые запросы)
24%
Да, но только без передачи кода проекта на вход
14%
Нет, строгий запрет