iOS Dev
7.72K subscribers
1K photos
85 videos
1 file
1.17K links
🍏Канал об iOS-разработке, необычных подходах и решениях.
👨‍💻Автор: Виктор Грушевский (@Viktorianec)
Темы:
⭐️ Подготовка к собеседованиям.
⭐️ Архитектуры и алгоритмы.
⭐️ Код. Много кода.

⚒️База знаний: https://boosty.to/ios_dev

#ios #mobile #swift
Download Telegram
ReviewBuddy — приложение для трекинга оценок в AppStore или как сменить регион, не внося изменения в Apple ID

Время от времени я стараюсь облегчить жизнь в разработке и для своих проектов, и для целей компании (раз, два).

Иногда необходимо видеть, как приложение выглядит в том или ином аппсторе, но нативной опции для переключения у нас нет (либо можно чекать в браузере каждый раз через несколько действий).

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

Наверняка, многие знают про опцию поиска приложений (и способ для проверки доступности новой версии через https://itunes.apple.com/search). Но ведь её можно использовать и для поиска оценок/формирования средневзвешенной.

Поэтому я внедрил несложный механизм запросов с помощью уже не такого новомодного async/await и написал алгоритм трекинга оценок для любого приложения в аппсторе. Бонусом впилил историю, просмотр отзывов (а отвечать на них можно в Starly), копирование айдишников и урлов и возможность шаринга оценок по любому приложению.

А вот с переключением аппсторов вышло интереснее (для этого можно использовать кастомные схемы, если кому интересно — покопайте вот тут) и с помощью этого можно переключать дефолтный стор (но, конечно, без возможности скачивания приложений или покупок). Цель — для девелоперов чекнуть их (и не только их приложения) в других странах.

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

🔗Скачать приложение можно здесь.
🎆 Поддержать — вот тут.

💸 Промокод (для инди-разработчиков и тех, кому нужно — можно использовать этот на фулл-версию на год).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
3021👍15👏7🔥3💯3👌2🎉1🏆1🎄1
Будьте внимательны к UserDefaults: история о труднодоступных ошибках и потерянных данных

Хотя UserDefaults и удобный инструмент (и стандарт, который использует все или почти все) с массой удобных фич (просто обмениваться данными, автоматическая сериализация/десериализация и так далее), есть кейсы, когда стоит использовать что-то ещё.

Например, два пункта, при которых точно стоит избегать использования UserDefaults:

🔘 Не нужно хранить конфиденциальные данные в UserDefaults (для этого есть кейчейн).
🔘 Следует избегать больших объемов данных в UserDefaults (правильнее юзать Core Data или Swift Data, или Realm, хотя поддержка большей части экосистемы остановлена).

📖 Вышла отличная статья от Кристиана Селига с разбором таких примеров, а ещё там есть интересные ситуации, когда данные могут быть недоступны (и при чём тут prewarming), и как предотвратить потерю вашей информации в UserDefaults.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
819👍11🔥6❤‍🔥31🎉1🎅1🎄1
Исследование причин зависаний приложений — серия уроков от Apple

📖
Вышла новая серия туториалов от Apple, в которой новички могут узнать, как использовать Instruments для анализа производительности, ресурсов и поведения приложений.

Затронуты темы, связанные с улучшением как отзывчивости, потребления памяти и анализ сложных ситуаций во время работы приложения.

Для удобства отметил главы в формате теории (📖) и практики (🛠)

Первая часть
📖 Начало работы с инструментами
🛠 Идентификация причины зависания

Вторая часть
🛠 Анализ активности главного потока
📖 Определение частоты выполнения
🛠 Сокращение нагрузки на основной поток
🛠 Выполнение работы асинхронно
📖 Понимание синхронных (и асинхронных зависаний)
🛠 Обеспечение выполнения работы в фоновом потоке

Кстати, в закрытой базе знаний есть большой раздел, в котором можно посмотреть на разные подходы к отладке приложений (и узнать про некоторые приёмы и советы).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
532🔥11👍7❤‍🔥3🎅21👏1💯1
Как работать со Swift Data и Core Data в фоновом режиме

Хотя SwiftData намного проще в настройке, фреймворк унаследовал многие проблемы Core Data (включая те, которые останавливали многих разработчиков от использования Core Data в своих приложениях).

Одна из самых больших проблем — управление моделями в различных контекстах. Модели Swift Data и Core Data небезопасно использовать совместно в разных потоках (они не Sendable и не thread-safe). Apple даже указывает на это в своем руководстве.

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

Большой гайд по работе со Swift Data есть в нашем канале и вот тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
620👍8🔥33🎄2🎉1👌1
Рисование кастомных фигур в SwiftUI: примеры и код

В SwiftUI Shape-протокол опредеяет контур нашей вью.

Он используется для рисования и проектирования своих собственных фигур или контролов разной сложности

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
714👍8🔥3❤‍🔥221👏1🎉1💯1🎄1
Как работать с passkeys в iOS-приложении

Passkeys используются для аутентификации пользователей без использования пароля (после WWDC 23 Apple даже добавила фразу: При использовании passkey с сервера нечего красть).

Сама пара public + private ключ создается каждый раз при генерации новой учетки.

Чтобы получить доступ к контенту пользователи могут использовать PIN-код или биометрию.

📖 Здесь есть полезный материал о том, как настроить passkeys в вашем приложении и пример реализации на github.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
621👍9🎄4🔥3🎉221🤩1👌1💯1
Проектирование сетевого слоя в iOS

Конечно, идеального решения не существует.

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

В двух больших статьях автор рассказывает о своём подходе к реализации на примерах:

📖 Проектирование API-клиента (создание запросов, пример реального варианта использования, авторизация + логирование).

📖 Вторая часть посвящена модульным и интеграционным тестам.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
525👍13👏6🔥3❤‍🔥2💯2👌1🎄1
Отрисовка графики на Apple Vision с помощью Metal Rendering API

Материалов по Apple Vision Pro очень мало (а приложений чуть больше, но если вы что-то делали, поделитесь в комментариях, очень интересно).

Когда дело доходит до рендеринга, большинство разработчиков выбирают уже известные игровые движки вроде Unity или высокоуровневые API Apple (чекайте RealityKit).

Однако есть и другой вариант, который был доступен с самого начала: создание собственного движка рендеринга с помощью Metal API.

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

Нашёл любопытную статью (которую сохранил и себе для будущих экспериментов), в которой рассматривается множество интересных моментов:

📖 Создание и настройка LayerRenderer.

📖 Vertex Amplification (и описание примеров с Vertex/Fragment шейдерами).

📖 Обновление и энкодинг для кадров.

📖 Поддержка стереоскопического и не-VR рендеринга дисплея.

📖 Рекомендации и советы.

Если сейчас это кажется не слишком актуальным, то через несколько лет, на мой взгляд, подобные устройства будут повсеместно (например, для медицины или работы с высокотехнологичными процессами в целом, да даже ремонтировать авто на продвинутых с сервисах с авто-подсказками чем не бизнес-идея).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
720👍9🔥6❤‍🔥4💯211👏1👌1🎅1
Что вы используете для хранения данных на клиенте (можно несколько вариантов)
Anonymous Poll
50%
Core Data
14%
SwiftData
22%
Realm
14%
SQLite
61%
UserDefaults
7%
Другое (напишу в комментариях)
613💯8👍52👌21🔥1🎅1🎄11
ℹ️ Новое требование к обновлениям приложений в ЕС

Начиная с сегодняшнего дня, для отправки обновлений приложений в App Store на территории Европейского Союза (ЕС) владельцам аккаунтов или администраторам программы Apple Developer Program необходимо ввести статус трейдера в App Store Connect.

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

Начиная с 17 февраля 2025 года, приложения без статуса трейдера будут удаляться из App Store в ЕС до тех пор, пока статус трейдера не будет предоставлен и проверен в целях соблюдения Закона о цифровых услугах.

Несколько рекомендаций по заполнению статуса - здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
10177👌6👏2❤‍🔥1🔥1🤯1🎉1🫡1
И ещё одно нововведение (более приятное) в App Store Connect

Будет полезным для инди-разработчиков (и для команд маркетинга/оптимизации и так далее).

В sales и trends всегда была опция для статистики по приложениям за все время (lifetime), а вот в аналитике добавили только сегодня.

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

🤩 Посмотреть можно на вкладке аналитики в списке пресетов.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
717💯74👍3🔥2🙏2🎅2🎄2
Технические собеседования в iOS IQ

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

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

Она обновляется постоянно, и уже сейчас там доступно:
Подготовка к собеседованиям:
- Мок-собесы с публичным доступом (сейчас несколько десятков на русском и английском языках).
- Вопросы для подготовки по секциям (сотни примеров на разные темы)
- Частные узкие темы (с поиском проблем в коде).
- System Design. Мои советы и большая подборка материалов.

Алгоритмы:
- Сложность алгоритмов.
- Разбор десятков задач с контестов (в том числе и от яндекса).
- Популярные методы решения задач (с примерами).

Архитектуры:
- Все паттерны проектирования банды четырёх. Общая информация и примеры реализации на Swift.
- Архитектурные заблуждения.
- Реализация в реальных приложениях.

Красим кнопки Необычные эффекты:
В этом разделе я делюсь анимациями, подходами к созданию и десятками примеров.

Инструментарий. Полезные советы при работе с Xcode, терминалом и симулятором


Подпишитесь, и вы получите доступ к полезным темам, разборам, эффектам и многому другому (это возможно и прямо здесь, в телеграм).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
119👍76🔥3🤝2❤‍🔥1👏1💯1🆒1😎1
Какую минимальную версию iOS вы поддерживаете на вашем рабочем проекте?
Anonymous Poll
4%
18
6%
17
20%
16
35%
15
19%
14
16%
13 (или ниже)
61188🤯3🔥2👏2💯2🎄2👍11
Как начать использовать Swift Testing

📖 В этой статье автор делится своим взглядом на то, что нужно знать для начала работы с новым фреймворком Swift Testing.

Рассмотрены основные возможности Swift Testing (а ещё его отличия и улучшения по сравнению с XCTest).

📺 А вот здесь этот материал представлен в формате видео.

📖 Кстати, в канале есть ещё один вариант разбора отличий и преимуществ по сравнению с XCTest.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
616👍85🔥22👏1💯1🎅1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Как создавать привлекательные анимации

Люди все чаще выбирают инструменты, ориентируясь на общие впечатления, а не только на функциональность.

Приложение, которое делает то, что вы ждёте и так, как вы хотели бы видеть — вот что выделяет продукт.

В частности, это одна из основных причин, почему компании инвестируют в дизайн-инженеров.

Умение создавать приятные анимации — сложная задача (для которой нужен опыт и знания).

📖 Эмиль Ковальски рассказывает о таких анимациях, приводит примеры (не только для iOS-платформы) и даёт советы, как можно улучшить впечатление пользователей.

В свою очередь, самыми интересными примерами я делюсь здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
527💯85👍4🔥3👏2🎉1👌1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
🤩 Image Playground в действии

Пока мы ждём выкатки API для разработчиков, некоторые счастливчики на бете успели потестить функциональность.

Похвалитесь, кто был в листе ожидания, получили ли доступ? В Европе пока все эти фичи (даже в бете) недоступны.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7255👍5🔥4🎄3😎3❤‍🔥2👏1🎉1💯1
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация переходов между view в SwiftUI

Transitions (или переходы) улучшают пользовательский опыт, делая взаимодействие более плавным и приятным.

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

В качестве примеров, где используются такие анимации, можно привести:

🔘Навигация между экранами.
🔘Добавление (или удаление) элементов из списка.
🔘Показ модальных вьюх.

📖 Разбор создания таких эффектов (и их комбинаций) можно почитать в этой статье.

🔗В канале есть ещё и пример таких переходов с использованием Metal.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
421👍7👏3💯32🎉2🎄2❤‍🔥1🔥1
iOS IQ — карта контента базы знаний

Как и прежде, я продолжаю развивать закрытую базу, в которой создаю собственные подборки вопросов, интересных особенностей Swift, анимаций, кода и не только.

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

🤩 А подписавшись сегодня, вы получите доступ к нескольким важным разделам:

Подготовка к собеседованиям:
- Мок-собесы с публичным доступом (сейчас несколько десятков на русском и английском языках).
- Вопросы для подготовки по секциям (сотни примеров на разные темы)
- Частные узкие темы (с поиском проблем в коде).
- System Design. Мои советы и большая подборка материалов.

Алгоритмы:
- Сложность алгоритмов.
- Разбор десятков задач с контестов (в том числе и от яндекса).
- Популярные методы решения задач (с примерами).

Архитектуры:
- Все паттерны проектирования банды четырёх. Общая информация и примеры реализации на Swift.
- Архитектурные заблуждения.
- Реализация в реальных приложениях.

Необычные эффекты:
В этом разделе я делюсь анимациями, подходами к созданию и десятками примеров.

Инструментарий. Полезные советы при работе с Xcode, терминалом и симулятором.

🧠 В бесплатном приложении есть большое количество подборок вопросов, с которыми можно попробовать справиться. Пока мое свободное время уходит на обновление, вы можете попробовать поставить там рекорд (хоть сейчас это и довольно непросто).


Всю следующую неделю действует специальное вводное предложение (в телеграм по-прежнему немного выгоднее).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2515👍8🔥6💯2🎄211❤‍🔥1
Комплексное руководство по работе с KeyPath в Swift

В мире Swift KeyPath - это мощная, но часто недооцениваемая функция.

Цель этой статьи — глубоко изучить функциональные особенности KeyPath, раскрыть возможности и помочь использовать её в процессе разработки.

📖 В материале описаны свойства, приведены примеры как читать/устанавливать значения через KeyPath и использовать KeyPath в качестве параметра.

5 вещей, которые вы могли не знать о KeyPaths можно проверить в этом посте.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
614👍6👏4🔥2🙏2🎄2111👌1
Работа с таймерами в Swift

Таймеры в Swift используются постоянно: для планирования отложенных или повторяющихся задач.

В статье, затрагивающей моменты создания и работы с таймерами, автор напоминает несколько важных моментов:

🔘 Зачем вообще нужны таймеры в Swift.
🔘 Повторяющиеся (и не повторяющиеся) таймеры.
🔘 Как запланировать повторяющиеся задачи.
🔘 Что такое tolerance и как runloop modes влияют на работу таймера.

📖 В канале есть ещё один неплохой разбор таймеров (ведь как известно, даже Apple допускает ошибки).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
917🔥8👍6👏2💯1🫡1🎄11
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация размытия экрана в режиме многозадачности

🔑 Повышение уровня конфиденциальности важно при разработке современных приложений (особенно мессенджеров или банковских приложений).

📖 В этой статье показан простой способ размытия контента, когда пользователь переходит в многозадачный (или фоновый режим).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
728👍10🔥8👌22❤‍🔥1🎉1🤩1😎1