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

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

#ios #mobile #swift
加入频道
Palette Menus в iOS 17: доступен новый тип меню как в Finder, Books и Mail

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

Этот элемент в Apple используют приложении Books на iOS или в Mail и Finder на Mac. Теперь же они доступны и в UIKit.

Чтобы превратить любое меню в палитру, просто добавьте .displayAsPalette к его параметрам, как показано ниже.

UIMenu(options: [.displayInline, .displayAsPalette], children: [ ... ])

Выбор будет отмечен соответствующим индикатором на основе предоставленного изображения.

Если все элементы в палитре используют монохромные символы SF или шаблонные изображения, выбранный элемент окрашивается цветом оттенка приложения.

👩‍🎓 Также можно задать свой стиль индикатора выбора, используя selectedImage в протоколе UIMenuLeaf.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
‼️Push Notifications Console — тестовые пуши, логи и валидация в новом инструменте Apple

Новая консоль push-уведомлений упростит отправку тестовых уведомлений на устройства Apple через службу Apple Push Notification (APN).

Есть доступ к логам, которые предоставляют информацию о процессе доставки, а также дополнительные инструменты для создания и проверки токенов. Что доступно:

🔘 Отправка уведомлений. Есть опция выбора приоритета доставки, тип (от alert до voip) и apns-expiration.

🔘 Логи. Время доставки зависит от различных факторов, а именно: мощности устройства, подключения устройства, приоритета push-уведомления, состояния приложения на устройстве и других.

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

В payload можно задать title, subtitle, body, launch-image и ряд других параметров.

🧑‍💻 Посмотреть и попробовать можно здесь.

😃 iOS Dev — помню времена, когда использовал Parse.
Please open Telegram to view this post
VIEW IN TELEGRAM
Новое меню для быстрых действий в Xcode 15

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

1️⃣ Для вызова нужно использовать шорткат Shift ⇧ + CMD ⌘ + A

2️⃣ Затем достаточно начать печатать название действия, которое вы хотите использовать.

👍 Из плюсов: можно сразу же выбрать любую опцию рефакторинга, что потенциально ускорит написание кода.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😂 Как должно выглядеть настоящее Perfomance Review!

Пока идёт огромный поток информации на неделе WWDC, нужно делать и небольшие паузы в освоении новых материалов.

Например, Крэйг Федериги вчера показал свои скиллы с помощью мощного гитарного соло, чем привёл в восторг всех присутствующих.

😎 А вы отдыхаете после релиза?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Новая опция в Xcode 15: форматирование кода на несколько строк

🤩 Спустя годы после того, как эту функцию запрашивали и после появления довольно популярного репозитория на Github Apple наконец выкатили фичу для разбиения кода на несколько строк. Разве не amazing!

Правда, пока нет шортката, но ведь и Xcode пока только в бете.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Новые опции дистрибуции в Xcode 15: отправка в App Store и TestFlight в один клик

Выше я поделился несколькими обновлениями, но это далеко не всё!

🔨 Например, теперь даже без использования инструментов CI, можно заливать приложение буквально в один клик, используя новые встроенные опции.

Варианты, которые были ранее, доступны во вкладке Custom.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Печальная новость для инди-разработчиков, Apollo для Reddit остановят 30 июня и вот почему это плохо

К крутым продуктам и их создателям можно относиться по-разному, но они двигают всю индустрию вперёд.

Один из таких людей — Кристиан Селиг. Как минимум дважды я писал о его идеях и в нашем канале: посмотрите ещё раз на эту милоту или на более серьёзный материал о работе с жестами.

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

Так вот, Reddit выкатил новые условия использования API, которые предполагают траты в размере 20 млн долларов в год для этого приложения. И хоть Аполло используют миллионы, платных юзеров около 50 000. Математически это красная зона для счёта в первый же месяц.

В этой истории последняя страница пока не перевёрнута, но очевидно следующее:

1️⃣ Когда вы полагаетесь на API от крупной корпорации, будьте готовы к таким поворотам. Примеры твиттера, ютуба и других говорят, что это тенденция, а не совпадение. Для корпораций потенциальная стоимость одного пользователя куда выше, чем для инди-разработчиков, так как они рассчитывают на больший доход. И если оценить ситуацию с холодной головой, это справедливо.

2️⃣ У большинства нет таких связей, как у Кристиана (бывшего интерна Applе со связями в яблочной корпорации). Поэтому не нужно думать, что ваш первый (или даже двадцатый) пет-проект обязательно должен получить Editor's choice.

3️⃣ Восемь лет работать над одним проектом — вызов. И в компании, и над своими проектами. Чтобы не выгореть, нужно любить своё дело, и даже при этом, иногда нужно находить время на то, чтобы отвлекаться.

У Кристиана всё будет хорошо. Есть невероятная поддержка и от пользователей, и от влиятельных персон, поэтому даже в случае шатдауна Аполло, с ресурсами на разработку всё будет в порядке.

И кое-что ещё. Если вам по-настоящему нравится какое-то приложение (необязательно Apollo), то потратьте две минуты на отзыв, а если позволяют финансы, то на премиум внутри. Для инди-разработчиков это не только мотивация, но, что более важно, сигнал о том, что их работа кому-то помогла.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Новые анимации для ScrollView в iOS 17: ScrollTransitionConfiguration в SwiftUI

Красота и относительная лёгкость реализации анимаций в SwiftUI не может не привлекать, как например в этом примере.

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

📺 В этом видео с WWDC рассказывается об изменениях в к Scroll View и приводятся примеры кода.

📖 Вот тут уже есть необходимая документация.

🔗 А в этом примере от Meng To можно посмотреть на одну из возможных реализаций.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Воспроизведение эффекта анимации NameDrop с использованием SKShader

Одной из самых эффектных фич в iOS 17 стала NameDrop (для шаринга контактов). Многие обратили внимание на необычную анимацию, похожую на водную рябь.

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

🛠 Вот здесь, кстати, исходный код, в котором вы можете посмотреть на реализацию и использовать в своих проектах.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Новая опция в Xcode 15: заглушки для пустых состояний

Одно из любопытных нововведений в Xcode — нативное добавление заглушек для обработки empty states (когда у вас не пришёл ответ от сервера, или, например, просто пустой результат поиска).

Ключ для использования — UIContentUnavailableConfiguration (больше инфы в официальной доке).

Можно создавать заглушки одного из трёх типов: empty, loading, search.

🧑‍💻 Кстати, бонусом доступна реализация конфига в том числе и на SwiftUI, а для использования можно задействовать UIHostingConfiguration там, где удобно.

А вот тут пример использования в реальном проекте.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый Resumable upload protocol: пауза/продолжение загрузки данных на сервер

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

Парадоксально, но нативной поддержки такого важного и полезного метода до сих пор нет.

🥳 Зато в 17 оси появится uploadTaskWithResumeData.

Конечно, сервер должен уметь поддерживать такой тип загрузок, и скорее всего, ваши коллеги уже слышали о SwiftNIO.

📺 А в этом видео можно узнать о дополнительных требованиях к серверу и посмотреть на пример клиентского кода (он интуитивен).

📖 Документация по новому методу доступна на сайте Apple.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Шейдеры в Xcode 15: возможности, примеры кода и математика

Shader — это референс на функцию в либе Metal, и в этом году появилось несколько новых модификаторов для его использования внутри SwiftUI. Пожалуй, основной недостаток — его доступность с iOS 17, в отличие от примера выше.

📖 В большой обзорной статье приводятся примеры кода, интеграции и работы с разными типами шейдеров.

🧑‍💻 А для тех, кто хочет прокачать свои знания — есть целая спецификация по созданию собственных шейдеров от Apple, Metal Shading Language (сокращённо, MSL).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Обзорный пост по всем нововведениям на WWDC23 для iOS Dev

WWDC подошла к концу, но для нас всё только начинается.

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

Технологии

🔘 8 новых фреймворков — описание, детали и требования.

🔘 Представленные технологии в формате кратких хайлайтов от Apple.

🔘 Топ-5 нововведений в Xcode 15 и все релизноты бета-версии.

Код и примеры

🔗 Проекты, показанные во время презентации, отобранные Apple.

🔗 SwiftData — туториал с примерами от Kodeco.

🔗 Адаптация проекта с Core Data к новой SwiftData.

🔗 Серии вопросов и ответов, связанных с SwiftData и CoreData.

Новые инструменты

🔨 Push notifications console.

Что точно пригодится

📖 Новый метод для контроллера viewIsAppearing.

📖 Изменения в локализации проектов.

Какие видео можно посмотреть в первую очередь

📺 Изменения в UIKit.

📺 Анализ зависаний с помощью инструментов.

📺 Разбор структурированного параллелизма (не только основы).

📺 Новые возможности дебага, и для чего нужен dwim-print.

📺 Swift-макросы и как они могут упростить написание сложных функций.

Кроме этого, вы всегда можете прочесть об основных изменениях вот с этого поста.

👩‍🎓 А я, в свою очередь, постараюсь оперативно сообщать о важном здесь, в канале:

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Необычный эффект увеличительного стекла с использованием Metal в iOS 17

🤩 Уже знакомый нам Janum Trivedi применил интересный подход к тому, чтобы повторить эффект лупы, который вы можете увидеть на гифке.

Для этого он использовал Metal, а также свою библиотеку Wave, о которой можно прочитать здесь.

🛠 Кстати, решение опенсорсное, а пример кода доступен на github.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
String Catalogs в Xcode 15: новый инструмент для локализации

Раньше, если вы хотели локализовать свое приложение, вам приходилось самостоятельно поддерживать файлы strings.

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

Apple упростила для разработчиков локализацию наших приложений, добавив каталоги строк (string catalogs).

Каталог строк автоматически отслеживает все локализуемые строки из вашего кода и хранит переводы в одном месте.

📺 Видео с WWDC, объясняющее то, как работают каталоги строк.

📖 Официальная документация Apple.

📖 Пример интеграции в реальный проект.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Превью документации в Xcode 15

🤩 Теперь c помощью Assistant можно включить превью документации в режиме реального времени.

Полезная фича для любого проекта (особенного на сотни тысяч строк кода).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆 Coderun завершён [бонусный уровень]

Для того, чтобы распределить лучших участников контеста, вчера добавили новые задачи. Пока я опомнился и увидел новую партию, уже было поздно, но буду объективен, за топ-3 было бы тяжело бороться, уровень участников слишком высокий.

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

Мои впечатления от сезона

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

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

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

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

🤩 Кстати, в некоторых треках участвовало больше двух тысяч человек, что несомненно успех для мероприятия.

А вы всё ещё можете побороться за топ-50 в мобильной разработке:

🔗 Попробовать свои силы можно здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
visionOS 1 beta доступен! Выпустили Xcode 15 beta 2

Как пишет Apple, все начинается со строительных блоков пространственных вычислений в visionOS.

Дефолтно приложения запускаются в Shared Space, где они существуют рядом — так же, как несколько приложений на рабочем столе Mac.

Внутри Full Space можно создавать 3D-контент, открывать портал в другой мир или даже реализовывать иммерсивное погружение.

🛠 Скачать бету Xcode можно с официального сайта.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
visionOS 1 beta доступен! Выпустили Xcode 15 beta 2 Как пишет Apple, все начинается со строительных блоков пространственных вычислений в visionOS. Дефолтно приложения запускаются в Shared Space, где они существуют рядом — так же, как несколько приложений…
Накатил бетку, увидел ещё одно подтверждение того, что название visionOS появилось буквально в последний момент (видимо всё было настолько быстро перед релизом, что оно до сих пор осталось).

🤩 Доказательства этого есть при установки симулятора (на скриншоте).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 Все изменения в Swift 5.9. В if и switch теперь можно не использовать return (но не только)!

Поскольку и if, и switch теперь могут использоваться как выражения, мы можем написать функцию как на скриншоте выше, без использования return! А все благодаря принятому предложению.

И хотя Swift 6 маячит на горизонте, выпуски 5.x всё также упрощают синтаксис. Не только if и switch, но и макросы, а также многое другое делают релиз 5.9 более впечатляющим.

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

Для тестирования вам понадобится актуальный тулчейн Swift 5.9, доступный в Xcode 14, или бета-версия Xcode 15.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM