iOS Dev
Відкрити в Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Показати більше7 877
Підписники
-424 години
+27 днів
-5430 день
Архів дописів
7 877
Использование собственного голоса в приложении iOS
Функция преобразования текста в речь существует на iOS уже более десяти лет, но в iOS 17 Apple добавила несколько новых функций, которые могут стать интересным дополнением к вашему приложению.
Конечно, для этого понадобится
AVSpeechSynthesizer. Кстати, список novelty-голосов можно посмотреть вот тут (Accessibility > Live Speech > Voices, посмотрите как-нибудь, если не видели ранее).
📖 В этой статье рассказано, как использовать AVSpeechSynthesizer, чтобы подключить системные, новые, и даже «персональный голос», созданный с помощью ИИ!
😃 iOS Dev7 877
🎉 Веб-распространение приложений для iOS в ЕС уже доступно
Ранее Apple анонсировали эту возможность для Европы при выполнении определённых требований (ждём и для стран СНГ?) .
🎆 А с сегодняшнего дня фича уже доступна в iOS 17.5 (beta 2) и в App Store Connect для разработчиков, про требования можно почитать здесь.
😃 iOS Dev
7 877
Блок вопросов: многопоточность (и бонус)
В iOS IQ на сегодня больше 10 крупных разделов (от алгоритмов до архитектур), каждый из которых постоянно обновляется, несколько сотен статей и множество реальных примеров кода.
На выходных я провёл редизайн некоторых секций, и теперь вопросы будут вынесены более явно.
Цель — собрать не только теорию, не только код, но и вопросы, которые требуют размышлений. Ведь все мы знаем, что правильно заданное направление (или вопрос) позволяет решить задачу уже на автоматизме.
Сейчас в этом разделе уже 20 вопросов, начиная от GCD и заканчивая async/await. А в разделе с вопросами на чтение кода ещё больше.
Каждая тема подкреплена материалами для изучения, с которых следует начать подготовку.
🍏➡️Секретная ссылка со скидкой здесь (количество активаций ограничено).
Скоро будет дополнительный анонс по развитию контента, рекомендую подписаться заранее, чтобы не пропустить.
😃 iOS IQ
7 877
Как быстро создать privacy manifest для приложения
Уже сейчас при заливке билдов в аппсторе есть соответствующее уведомление, а начиная с мая можно получить реджект, если не будет соответствующего манифеста.
Мик Бирн посчитал не слишком удобным, как это сделано сейчас в Xcode (поиск причин вручную) и реализовал собственную тулзу для генерации таких файлов (бесплатно и в открытом доступе).
🔗 Создать собственный манифест можно с помощью этого ресурса.
😃 iOS Dev
7 877
🍏 Структурные паттерны проектирования в Swift
Cтруктурные шаблоны (structural patterns) — шаблоны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры.
Проще говоря, этот вид паттернов связан с композицией объектов или тем, как сущности могут использовать друг друга.
Что к ним можно отнести?
- Адаптер.
- Мост.
- Компоновщик.
- Декоратор.
- Фасад.
- Flyweight (приспособленец/легковес).
- Прокси.
В iOS IQ я уже писал о том, почему удобная архитектура == более гибкий и лёгкий в поддержке код.
➡️Сегодня вышло большое обновление, в котором я добавил примеры по каждому виду таких паттернов (с кодом, разбором и реальными кейсами, а также видео).
✅Присоединяйтесь, здесь вся база, алгоритмы и архитектура без лишнего флуда.
😃 iOS IQ
7 877
Создание серчбара в стиле Apple
⭐️Каждый, кто работал с эпловским серчбаром, знает, как сложно было хэндлить разные кейсы до выхода последних версий iOS, особенно если используется непростая кастомизация.
Во многих приложениях Apple для visionOS, таких как Music, Safari и Apple TV, также есть удобное поле поиска.
Но начиная с версии visionOS 1.1, повторить его визуальное исполнение непросто из-за отсутствия нужного API, хотя и все равно возможно!
📖 В этом материале разработчик объясняет, как можно для этих целей использовать UISearchBar из UIKit (и делится неочевидными сложностями).
😃 iOS Dev
7 877
Benchmark - инструмент для измерения производительности Swift
Производительность, безусловно, ключевая характеристика и для приложений, и для фреймворков.
Benchmark позволяет легко чекать множество показателей: загрузку процессора, ARC-трафика, использование памяти, ресурсов оси, таких как потоки и системные вызовы, а также полностью кастомные счетчики метрик.
Его основная функция - именно замер производительности, а другие средства (Instruments, DTrace, Heaptrack, Leaks, Sample) могут быть использованы для поиска причин.
🛠 Вот тут есть сылка на репозиторий и статья с примерами на сайте swift.org.
📖 А вот здесь в канале разбор инструмента от ETTrace от Emerge.
✅А в iOS IQ есть огромный раздел c советами по повышению производительности приложений (как бороться с лагами, шаги по поиску утечек и многое другое).
😃 iOS Dev
7 877
Apple показал Ferret-UI для распознавания мобильных интерфейсов
После обучения на собранных массивах данных Ferret-UI демонстрирует отличное понимание интерфейса и способность выполнять открытые инструкции.
Ferret-UI не только превосходит большинство опенсорсных MLLM, но и превосходит GPT-4V по всем элементарным UI-задачам.
🔗 Целиком исследование доступно здесь.
Вероятно, как минимум, это расширит области по работе с доступностью для определённых групп пользователей, а как максимум, может приведёт нас к этому.
К слову, у гугла есть также есть объёмное исследование для работы с интерфейсом.
😃 iOS Dev
7 877
Method swizzling в Swift: определение, примеры, плюсы и минусы
Method swizzling — это техника, которая позволяет изменять или заменять реализацию существующего метода в рантайме.
Она включает в себя обмен реализациями двух методов, обычно для добавления или изменения поведения без модификации исходного класса.
😎 Firebase, пожалуй, самый известный SDK, который юзает свиззлинг. Например, FirebaseAnalytics изменяет методы жизненного цикла в
UIViewController для отправки событий аналитики.
Pulse изменяет инициализатор URLSession для трекинга сетевой активности, проходящей через URLSession.
А в целом, пул применения можно расширить до следующих примеров:
1️⃣ Расширение или изменение поведения существующих методов во фреймворках или сторонних либах.
2️⃣ Отладка или логирование, например, отслеживание вызовов или измерение производительности.
3️⃣ Аутентификация или кэширование, в нескольких методах или классах.
✅В ноушне я добавил примеры кода, плюсы и минусы (и когда лучше избегать этого способа), а также несколько полезнейших источников для того, чтоб разобраться с Method Swizzling.
😃 iOS Dev7 877
🕹 В App Store разрешили эмуляторы ретро-игр
Теперь разработчики могут выкладывать и такой тип приложений, а пользователи iPhone смогут устанавливать себе эмуляторы напрямую из App Store, а не использовать для этого сторонние магазины приложений, которые ранее разрешили в ЕС.
До этого любые эмуляторы игр были под запретом. Единственным вариантом было юзать джейлбрейк или искать альтернативные пути.
Важная деталь — эмуляторы должны соответствовать остальным правилам, включая запрет на пиратские игры.
📖 Детально изменения гайдлайнов здесь.
😃 iOS Dev
7 877
Apple Store Ковент-Гарден (Лондон)
Посещение необычных или старых сторов эпл - одна из моих небольших традиций при поездках в другие страны.
📸 В этот раз делюсь фотосетом одного из флагманских магазинов компании в Великобритании.
Трехэтажный магазин, расположенный в здании, где раньше находился Rock Garden, привлекает огромное количество туристов.
Каждое помещение посвящено одной из линеек продукции Apple, а главный двор полностью отдан под большие дубовые столы с десятками планшетов iPad, которые покупатели смогут опробовать.
После оплаты они могут посетить «комнату настройки», где сотрудники Apple распакуют и настроят их новый гаджет.
Забавный факт, даже если у компании что-то пойдет не так, то на продаже этой недвижимости они смогут заработать невероятно крупную сумму денег, ведь адрес этого красивого здания - London, The Plaza, 1.
Около десяти лет назад в Ковент-Гардене было даже больше посетителей, чем на пятом авеню в Нью-Йорке!
Другие истории об эпл сторах:
🍏 Apple Store Marunouchi в Токио.
🍏 Apple Store в Купертино.
🍏 Apple Tower Theater в Лос-Анджелесе.
😃 iOS Dev
7 877
Шаринг файлов с кастомными типами в iOS
📁 Если вы планируете использовать не только стандартные типы файлов на iOS, но и заставить систему распознать файл и открыть его в вашем приложении, вы можете использовать типы документов и идентификаторы экспортируемых типов.
Это очень полезно при создании приложений для работы с документами, позволяющих экспортировать данные для резервного копирования или переноса между платформами.
📖 Вот тут есть инструкция с примером кода, как это сделать.
🐱 А в ноушне добавил пост, как можно переносить данные между своими приложениями в целом (около десятка вариантов).
😃 iOS IQ
7 877
Создание 3D-элементов для iOS и VisionOS
Meng To выпустил большое обучающее видео по работе со Spline.
📺 В этом видео можно узнать о следующих вещах:
1️⃣ Создание интерактивных 3D-сцен для приложений iOS и экспорт в Xcode 15+.
2️⃣ Работа над элементами для visionOS.
3️⃣ Пример создания 3D-иконок приложений и динамических анимаций интерфейса.
4️⃣ Расширенные возможности Spline, такие как частицы и физика для более реалистичных эффектов.
5️⃣ Введение в 3D-моделирование.
😃 iOS Dev
7 877
TextView и что он скрывает: история разработки приложения Paper
Уже более 9 лет Михаил Лапушкин работает над своим текстовым редактором. За это время он прошёл огромный путь, и в двух по-настоящему масштабных статьях делится тем, с какими подводными камнями ему пришлось столкнуться и, например, почему в приложении нет сторонних зависимостей.
TextView — это огромный компонент, сложность которого только возрастает с каждым выпуском оси.
Например, приложение TextEdit почти полностью состоит из одного TextView.
Ну а когда один класс может быть использован для создания целого приложения, вы и сами понимаете, что это за зверь.
📖 В первой части Михаил рассказывает свою увлекательную историю приложения (об архитектуре, релизах, дебаге и не только).
📖 А во второй делится хардкорными вещами: работой с атрибутами, стилями, перфомансом, математикой для отрисовки и многим другим.
😃 iOS Dev • 🐱 Узнать больше об архитектурах
7 877
Важное обновление AppStore Connect, новый сервис Apple Crash +
В дополнение к последним изменениям, касающимся проверки доступа к API и необходимости работы с privacy manifests в эппл приняли сегодня выкатили новую политику проверки приложений.
Теперь review team будет проверять приложения только 3 раза после каждого реджекта. Все остальные проверки доступны платно.
Доступно два вида подписки на Apple Crash +:
💵$ 9.99 в месяц – Apple Crash + безлимитные проверки приложений после первого реджекта.
💵$ 19.99 в месяц – все то же самое, что и в первой версии, но проверка приложений будет в течение часа после загрузки билда.
Видимо, изменения вызваны упущенной выгодой в новых альтсторах.
📺 Детально изменения доступны на новом канале эпла в YouTube.
😃 iOS Dev
7 877
Простая монетизация — инструмент для повышения доходов от рекламы
Каждая студия мечтает больше фокусироваться на развитии проектов и меньше беспокоиться о бюджете на разработку. Один из способов обрести больше независимости — продуманная стратегия монетизации приложения.
Опыт студии Starkom показывает, что повысить доходы от игр можно, настроив рекламную монетизацию. Студия решила сэкономить время и силы, поэтому подключила Простую монетизацию Яндекса. В результате разработчики стали зарабатывать в 4 раза больше на рекламе в приложениях. Например, в приложении Drift Legends еCPM выросла с 70 ₽ до 240 ₽.
При этом сэкономили время и ресурсы — эксперты Простой монетизации сами проводят аудит приложения, настраивают рекламные блоки и единую систему медиации без участия партнёра. Всего за 10% с доходов от настроенной монетизации.
Узнать подробнее о Простой монетизации и оставить заявку на подключение можно по ссылке: https://clck.ru/39kE6h?erid=2bL9aMPomHTWZFD1JYB2zKBypW
7 877
Новый раздел в Develop in Swift от Apple
🤩 Тим Снит сегодня анонсировал новый набор туториалов для тех, кто только делает первые шаги в программировании с помощью Swift и SwiftUI.
Для понимания даже не нужен предварительный опыт написания кода в целом, так что эти материалы могут стать отличным стартом.
📖 Обучающие материалы Apple доступны здесь.
😃 iOS Dev • Разбор алгоритмов
7 877
SwiftUI Layout Protocol: как работать с версткой в SwiftUI
Хотя создавать базовый лэйаут несложно, существует множество вариантов, с которыми могут быть трудности.
Ниже будут рассмотрены не только типичные примеры для Layout, но и ряд важных моментов для формирования базы.
Весь материал состоит из двух больших частей, для удобства они сгруппированы по темам.
Первая часть:
➡️ Что такое Layout Protocol?
➡️ Разбор View Hierarchy.
➡️ Первая реализация лэйаута.
➡️ Выравнивание контейнеров.
➡️ Кастомные значения: LayoutValueKey.
➡️ Дефолтный Spacing.
➡️ Для чего нужен Spacer().
➡️ Layout Cache.
➡️ Переключение между лэйаутами с помощью AnyLayout.
➡️ Выводы.
Вторая часть:
➡️ Пусть начнётся веселье!
➡️ Кастомные анимации.
➡️ Двунаправленные кастомные значения.
➡️ Избежание зацикливания и крашей.
➡️ Рекурсивные лэйауты.
➡️ Композиция лэйаутов.
➡️ Еще один пример композиции: Интерполяция.
➡️ Использование binding-параметров.
➡️ Полезный инструмент отладки.
➡️ Заключительные мысли.
🐱 Больше разборов, примеров анимаций, алгоритмов и архитектур — доступно вот здесь.
😃 iOS IQ
7 877
Воспроизведение анимации с заставки WWDC 2024
В iOS IQ я стараюсь рассматривать не только важные моменты о разработке, но и необычные анимации и эффекты.
Во вчерашней новости многие обратили внимание на сложный эффект в заставке.
🤩А Дэниел Кунц уже успел реализовать его с помощью метал-шейдера.
🐱 Получить доступ к реализации других необычных эффектов можно здесь.
😃 iOS IQ
