Что вы используете для хранения данных на клиенте (можно несколько вариантов)
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
19%
16
36%
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%
Нет, строгий запрет
Шифр Виженера или приключение на одну минуту
Наверняка вы знаете про шифр Цезаря (даже если никогда не думали про Римскую империю).
Но если в шифре Цезаря каждая буква алфавита сдвигается на несколько позиций, шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига.
Для шифрования нужню юзать таблицу алфавитов (она же tabula recta или квадрат Виженера).
Например, для латиницы это будет таблица из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций.
Таким образом, в таблице получится 26 различных шифров Цезаря.
🚀 Но давайте к делу!
У меня есть одна проходка на конференцию Podlodka, которую я решил разыграть между самыми быстрыми и внимательными читателями нашего канала.
В канале я спрятал ключевое слово, подсказка — этот пост.
Используйте ключевое слово к этой строке:
Всем удачи (для дешифрования можете использовать любые алгоритмы, сервисы, в общем - самый быстрый способ, но регистр важен!).
И ещё, пожалуйста, поделитесь в комментариях найденным кодом (после активации), чтобы остальные читатели знали, когда можно остановиться.
😃 iOS Dev
Наверняка вы знаете про шифр Цезаря (даже если никогда не думали про Римскую империю).
Но если в шифре Цезаря каждая буква алфавита сдвигается на несколько позиций, шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига.
Для шифрования нужню юзать таблицу алфавитов (она же tabula recta или квадрат Виженера).
Например, для латиницы это будет таблица из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций.
Таким образом, в таблице получится 26 различных шифров Цезаря.
🚀 Но давайте к делу!
У меня есть одна проходка на конференцию Podlodka, которую я решил разыграть между самыми быстрыми и внимательными читателями нашего канала.
В канале я спрятал ключевое слово, подсказка — этот пост.
Используйте ключевое слово к этой строке:
qck_fvzy_14_UYxpuF
и вы получите код билета на конференцию.Всем удачи (для дешифрования можете использовать любые алгоритмы, сервисы, в общем - самый быстрый способ, но регистр важен!).
И ещё, пожалуйста, поделитесь в комментариях найденным кодом (после активации), чтобы остальные читатели знали, когда можно остановиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как запретить создание скриншотов для важных экранов в Swift
Для этого пригодится элегантное решение с применением свойства
📖 В этой статье автор делится необходимыми шагами с примером кода.
😎 Кстати, способ актуален и для записи видео с экрана девайса.
⭐️ Больше примеров и необычных решений здесь.
😃 iOS Dev
Для этого пригодится элегантное решение с применением свойства
isSecureTextEntry
с помощью кастомного модификатора.📖 В этой статье автор делится необходимыми шагами с примером кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание адаптивной верстки в SwiftUI с использованим Layout-протокола
Комбинация
Важно обладать навыками для создания верстки, которая хорошо выглядит и в портретной, и в альбомной ориентации экрана.
📖 В этом материале разбирается подход с использованием протокола Layout (доступного с 16 iOS).
😃 iOS Dev
Комбинация
UICollectionView
и UICollectionViewFlowLayout
в UIKit дает много гибкости и контроля для создания любых нужных нам макетов, но вот в SwiftUI с этим могут быть сложности.Важно обладать навыками для создания верстки, которая хорошо выглядит и в портретной, и в альбомной ориентации экрана.
📖 В этом материале разбирается подход с использованием протокола Layout (доступного с 16 iOS).
Please open Telegram to view this post
VIEW IN TELEGRAM
Невозможно всё знать
В университете, когда я писал свою кандидатскую диссертацию несколько лет назад (пусть и не вышел на защиту в итоге, перейдя полностью в коммерческую разработку), мой научный руководитель поделился важной мыслью, которую я добавил в свой арсенал знаний и очень бережно вспоминаю её, когда сталкиваюсь со сложными задачами.
Вкратце: весь объём знаний, всё, что придумало человечество на данный момент можно представить в виде круга. Всё, что есть — технологии, идеи и накопленный опыт внутри. И наша задача (тех, кто пытается создать что-то новое), это не выпрыгнуть из него, не изобрести телепорт или какую-то качественно новую технологию, а всего лишь добавить одну точку на окружности. Одну — за которую можно зацепиться всем другим исследователям, которые добавят свои маленькие точки, и дальше может пройти большое количество времени, но принцип станет понятным. С помощью таких маленьких шагов вперёд всегда можно видеть чуть большую картину, а это означает, что и большее количество перспектив.
В разработке также, особенно когда мы сталкиваемся с широким полем неизвестности.
Как-то я боролся с багом, связанным с CallKit: была проблема исчезающего звука на втором входящем вызове на заблокированном экране телефона (только вдумайтесь в исходные условия), и только благодаря тому, что когда-то я читал про работу с аудиосессиями и создавал несколько плееров, я понимал несколько вариантов развития событий, и, соответственно возможных решений.
Иногда в разработке вы можете столкнуться с задачами, на которые не то, что нет ответов на StackOverflow, но будет только один вопрос (и тот ваш, заданный пару лет назад, как в известной шутке).
В таком случае придётся искать (и создавать что-то новое). Со стороны для тестировщиков (или для заказчика проекта, или для вашего ПМ) это будет выглядеть, как просто ещё один решённый баг. Но для вас — это маленькая победа, помните о ней. Из таких решённых задач и будет складываться тот пул знаний, который в будущем позволит вам легче справиться с более сложными вещами.
Что-то всегда будет ломаться. Объём, нагрузка, требования, новые SDK, новые технологии будут заставлять настраивать проект напильником (по этой причине стоит помнить о подводных камнях сторонних зависимостей).
Знать всё невозможно.
Но хочется вспомнить о словах человека, который придумал соцсеть с миллиардом (уже двумя) человек:
«Move fast and break things» (двигайтесь быстро и ломайте вещи)
И если у вас ничего не ломается, то возможно, ваш проект развивается недостаточно быстро?
😃 iOS Dev
В университете, когда я писал свою кандидатскую диссертацию несколько лет назад (пусть и не вышел на защиту в итоге, перейдя полностью в коммерческую разработку), мой научный руководитель поделился важной мыслью, которую я добавил в свой арсенал знаний и очень бережно вспоминаю её, когда сталкиваюсь со сложными задачами.
Вкратце: весь объём знаний, всё, что придумало человечество на данный момент можно представить в виде круга. Всё, что есть — технологии, идеи и накопленный опыт внутри. И наша задача (тех, кто пытается создать что-то новое), это не выпрыгнуть из него, не изобрести телепорт или какую-то качественно новую технологию, а всего лишь добавить одну точку на окружности. Одну — за которую можно зацепиться всем другим исследователям, которые добавят свои маленькие точки, и дальше может пройти большое количество времени, но принцип станет понятным. С помощью таких маленьких шагов вперёд всегда можно видеть чуть большую картину, а это означает, что и большее количество перспектив.
В разработке также, особенно когда мы сталкиваемся с широким полем неизвестности.
Как-то я боролся с багом, связанным с CallKit: была проблема исчезающего звука на втором входящем вызове на заблокированном экране телефона (только вдумайтесь в исходные условия), и только благодаря тому, что когда-то я читал про работу с аудиосессиями и создавал несколько плееров, я понимал несколько вариантов развития событий, и, соответственно возможных решений.
Иногда в разработке вы можете столкнуться с задачами, на которые не то, что нет ответов на StackOverflow, но будет только один вопрос (и тот ваш, заданный пару лет назад, как в известной шутке).
В таком случае придётся искать (и создавать что-то новое). Со стороны для тестировщиков (или для заказчика проекта, или для вашего ПМ) это будет выглядеть, как просто ещё один решённый баг. Но для вас — это маленькая победа, помните о ней. Из таких решённых задач и будет складываться тот пул знаний, который в будущем позволит вам легче справиться с более сложными вещами.
Что-то всегда будет ломаться. Объём, нагрузка, требования, новые SDK, новые технологии будут заставлять настраивать проект напильником (по этой причине стоит помнить о подводных камнях сторонних зависимостей).
Знать всё невозможно.
Но хочется вспомнить о словах человека, который придумал соцсеть с миллиардом (уже двумя) человек:
«Move fast and break things» (двигайтесь быстро и ломайте вещи)
И если у вас ничего не ломается, то возможно, ваш проект развивается недостаточно быстро?
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация приложения для игры в шахматы на SwiftUI
David v.Knobelsdorff недавно создал шахматное приложение от начала до конца с помощью SwiftUI и задокументировал весь процесс в своем блоге.
Это объёмный материал (аж из девяти частей), но его стоит прочитать, если вы интересуетесь шахматами или ищете хороший пример создания полноценного приложения на SwiftUI.
1️⃣ Мотивация и терминология.
2️⃣ Зачем нужны pgn-файлы и как с ними работать.
3️⃣ Реализация логики.
4️⃣ Создание набора компонентов.
5️⃣ База данных и кодирование ходов.
6️⃣ FSRS-алгоритм (тут можно почитать про него дополнительно).
7️⃣ Шахматные головоломки.
8️⃣ Использование локального шахматного движка.
9️⃣ Тестирование и выводы.
😃 iOS Dev
David v.Knobelsdorff недавно создал шахматное приложение от начала до конца с помощью SwiftUI и задокументировал весь процесс в своем блоге.
Это объёмный материал (аж из девяти частей), но его стоит прочитать, если вы интересуетесь шахматами или ищете хороший пример создания полноценного приложения на SwiftUI.
1️⃣ Мотивация и терминология.
2️⃣ Зачем нужны pgn-файлы и как с ними работать.
3️⃣ Реализация логики.
4️⃣ Создание набора компонентов.
5️⃣ База данных и кодирование ходов.
6️⃣ FSRS-алгоритм (тут можно почитать про него дополнительно).
7️⃣ Шахматные головоломки.
8️⃣ Использование локального шахматного движка.
9️⃣ Тестирование и выводы.
Please open Telegram to view this post
VIEW IN TELEGRAM