🇺🇦 iOS Dev UA - спільнота iOS розробників
384 subscribers
399 photos
42 videos
9 files
961 links
Перша україномовна спільнота iOS розробників 🇺🇦

👨‍💻Цікаві матеріали зі світу розробки для продуктів Apple.
Статті по розробці на Swift та SwiftUI. Огляд нових технологій в розробці від Apple.

чат: @iOSDevsUAChat
Ідеї та пропозиції: @SergeyZhuravel
Download Telegram
💡Swift Testing набагато повільніший за XCTest

На наборі з 1000 простих тестів XCTest виконується за 3 секунди, а Swift Testing – за 85. Репозиторій з бенчмарком тут.

🇺🇦 iOSDevUA
2
💳 У StoreKit нові Win-Back офери. Користувач відписався — пропонуєте йому знижку.

Хто досвідчений, знає — такі системи роблять вручну. Відслідковуєш відписку, далі відправляєш пуш або на пошту. А тут готова система.

Опціонально можна показати офер на сторінці додатка, у пошуку і навіть зафічерити (на розсуд Apple, звісно).

🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
💡Міграція в Swift організацію продовжується

Swift організація на GitHub продовжує поповнюватися новими проєктами. За останній тиждень туди переїхали основний репозиторій Swift, SwiftPM, плагін для VSCode, LSP та багато менших репозиторіїв.

🇺🇦 iOSDevUA
🔥1
🤯 Уразливості в CocoaPods

У CocoaPods виявили одразу кілька дуже неприємних уразливостей, які вже виправлені:

👉 Зловмисники могли отримати контроль над покинутими подами, і, як результат, додати туди шкідливий код, який завантажувався б в застосунки без локання на певну версію бібліотеки.
👉 Авторизація через email була реалізована небезпечно, через що зловмисники могли виконувати довільний код на сервері CocoaPods, відповідальному за Podspec’и.
👉 Зловмисники могли отримати доступ до авторизаційних токенів розробників і підміняти пакети прямо на сервері.

Обов’язково перегляньте чек-лист того, що вам потрібно зробити з вашим проєктом, щоб перевірити, чи не стали ви жертвою підміни пакетів.

🇺🇦 iOSDevUA
💡Про типізовані помилки в Swift!
Звісно, з прикладами та поясненнями. Подібні матеріали вже були, але раз з’явився ще свіжий і точно корисний, то тримайте! 🤓

👉https://www.avanderlee.com/swift/typed-throws/

🇺🇦 iOSDevUA
🔥1
💡Покращена підтримка Swift у VSCode

Разом з виходом Swift 6 значно покращилася підтримка мови у VSCode. Дещо вдосконалили у самому плагіні, дещо вдалося завдяки покращенням у SourceKit-LSP.

👉 Інтеграція зі Swift Testing
👉 Відображення code coverage
👉 Перейменування для функцій, типів та змінних
👉 Інтеграція зі swift-format
👉 Вибір з декількох Swift тулчейнів
👉 Індексація проєктів SwiftPM у фоновому режимі

🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Аналіз нововведень при роботі зі скролом в iOS 18

На WWDC 2024 Apple знову показала ряд чудових нових API для ScrollView у SwiftUI.

📖 У цій статті розглядаються основні зміни, а також аналізується розвиток важливих API з моменту створення SwiftUI.

🇺🇦 iOSDevUA
👍2
💡Оновили домашню сторінку document-based додатків (див. скріншот)

👔 Верхній хедер можна налаштувати, але елементи будуть як на скріні — фон, кнопки і т.д.

👶 Якщо писали на SwiftUI, то зворотної сумісності немає — потрібен DocumentGroupLaunchScene iOS 18+. А на UIKit буде новеньке.

🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
Hello iOS developers! New digest is here!

Hello everyone! New iOS weekly digest is here!
🚀🚀🚀 Last Week at Apple 🚀 🚀 🚀

Vulnerabilities in CocoaPods Open the Door to Supply Chain Attacks Against Thousands of iOS and MacOS Applications
Multiple vulnerabilities affecting the CocoaPods ecosystem, have been discovered, posing a major risk of supply chain attacks:
https://www.evasec.io/blog/eva-discovered-supply-chain-vulnerabities-in-cocoapods

Let's dive into some iOS apps history 🙂 Let's read how Uber's iOS and Android applications were created.
Brief History of Scaling Uber
https://www.linkedin.com/pulse/brief-history-scaling-uber-josh-clemm-dfqgc/

SwiftUI can be a bit... eager
When writing an application using AppKit or UIKit you feel can confident as to when views are created and released. Your code takes explicit actions for that to happen. SwiftUI is a big more nebulous. Let's look at a typical example. Below is a simple SwiftUI application that shows a partial list of SFSymbols and allows you to tap on one to see a larger version:
https://www.attributedstrings.com/swiftui-can-be-a-bit-eager

A Summary Of How To Pass Data To SwiftUI Environment
The SwiftUI environment is an in-memory shared storage among all views within a view hierarchy. Thanks to it, various parts of an app can access shared data easily, allowing for better state management which is fundamental to SwiftUI. The environment simplifies data flow by just making it available to views, while each individual view can read or update only the pieces of data that’s interested in. In general, the environment lifts a big load of sharing data among views, it helps us write cleaner code, but most importantly, it lets us focus more on the views and the user interface:
https://serialcoder.dev/text-tutorials/swiftui/a-summary-of-how-to-pass-data-to-swiftui-environment

Mastering ScrollView in SwiftUI. Scroll Phases
This year, the SwiftUI framework introduced several new scrolling APIs, allowing us to track and tune everything in a scroll view. This week, we will discuss monitoring scroll phases in SwiftUI:
https://swiftwithmajid.com/2024/07/02/mastering-scrollview-in-swiftui-scroll-phases

WebSocket tutorial using Swift and Hummingbird
A great tutorial about how to create a server and a client using WebSockets and Hummingbird framework on Swift:
https://swiftonserver.com/websocket-tutorial-using-swift-and-hummingbird
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Новий модальний транзишн. І для SwiftUI, і для UIKit. Звісно, iOS 18+

controller.preferredTransition = .zoom { _ in }


Концепція як у Hero (ось посилання, якщо раптом не стикалися), тільки виглядає гірше.

🇺🇦 iOSDevUA
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
💡Створення багатоступеневої анімації в SwiftUI

Анімації в додатку служать візуальними індикаторами, що інформують користувачів про здійснені дії.

Вони особливо корисні при зміні інтерфейсу, наприклад, під час завантаження нового контенту або демонстрації нових дій.

📖 У цій статті розглядається приклад роботи з PhaseAnimator (його особливо зручно застосовувати, коли нам потрібна анімація, яка безперервно повторюється та реагує на події).

🇺🇦 iOSDevUA
👍3
💡Expicitly built modules в Xcode 16

В Xcode 16 додали функцію “Explicitly built modules”, яка має допомагати прискорювати збірки та робити помилки більш інформативними. У статті детально розповідається, як ця функція прискорює роботу xcodebuild, і як її можна увімкнути для свого проєкту.

На Beta 1, правда, прискорення поки що не помітно.

🇺🇦 iOSDevUA
👍4
💡Клієнт-серверний додаток на вебсокетах з фреймворком Hummingbird

Детальний туторіал про те, як написати прості клієнт і сервер для чат-додатка, які будуть спілкуватися за допомогою вебсокетів, на фреймворку Hummingbird.

🇺🇦 iOSDevUA
👍1
💡Як працюють черги

Чудовий пост про те, як працюють різні типи черг, за якими параметрами їх можна порівнювати між собою та як пріоритизація запитів впливає на них. Найкрутіше – все це з інтерактивними прикладами!

🇺🇦 iOSDevUA
👍2
Управління пам’яттю у Swift

Безумовно, управління пам’яттю є найважливішим етапом для забезпечення максимальної продуктивності та запобігання витокам.

Хочу поділитися статтею, в якій зачіпаються не лише базові речі (стек і купа), але й пастки, в які можна потрапити при реалізації функцій, абстракцій тощо.

📖 У цьому матеріалі розглянуті й ситуації, коли структури можуть бути неефективними у використанні порівняно з класами, відмінності статичної від динамічної диспетчеризації та багато іншого.

🇺🇦 iOSDevUA
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
💡Створення інтерфейсу пошуку у стилі Photos з iOS 18

Новий розділ виглядає як кастомна View у SwiftUI, яку Seb Vidal спробував відтворити за допомогою публічного API (але без реверс-інжинірингу не обійшлося). Затронуто також найскладніший момент — плавний перехід фону в стиль клавіатури.

📖 Тут можна прочитати про основні етапи створення такого екрану.

🛠 А тут подивитися на реалізацію в коді.

🇺🇦 iOSDevUA
👍3
💡Про Meridian, ще один серверний фреймворк

Meridian – фреймворк для розробки бекенда на Swift. Його відмінна особливість – API, схожий на SwiftUI. Ще з цікавого:

👉Є підтримка вебсокетів
👉async/await з коробки
👉Можна зручно оголошувати свій Middleware

🇺🇦 iOSDevUA
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
💡Animatable та AnimatablePair: призначення та приклади

SwiftUI дозволяє створювати анімацію без особливих зусиль, але іноді нам потрібен більший контроль над тим, як рухаються та анімуються об’єкти.

Наприклад, щоб синхронізувати анімацію декількох властивостей, нам потрібно використовувати AnimationPair:
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
@frozen public struct AnimatablePair<First, Second> : VectorArithmetic where First : VectorArithmetic, Second : VectorArithmetic

Більше інформації в офіційній документації Apple.


📖 У цій статті розглянуті Animatable та AnimatablePair, а також є приклади, як можна використовувати API для покращення анімацій у наших додатках.

📖 Нагадаю, що в каналі є ще одна стаття про створення багатоступеневої анімації.

🇺🇦 iOSDevUA
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
💡Складнощі в роботі з кареткою

Автор бібліотеки DeclarativeTextKit розповідає про неочевидні складнощі розрахунку позиції каретки та ментальну модель, яка допомагає міркувати навіть у граничних випадках.

🇺🇦 iOSDevUA
🔥2
💡Основою практично будь-якого iOS додатку на даний момент є робота з мережею.
І, звісно, цю частину теж потрібно якось дебажити, оптимізувати, аналізувати тощо.
Ось стаття про це. Автор тут розповідає про свій інструмент RocketSim, про який ми вже писали, і показує на його прикладі функцію з «копанням» у роботі запитів у проєкті. Але під капотом для цього він використовує опенсорсну бібліотеку Pulse. Тож якщо не хочете використовувати RocketSim, то можете спробувати просто цю бібліотеку напряму. Посилання є в статті.
Самі функції дуже класні. Зручно дивитися, який запит спрацював у який момент часу, скільки зайняв, які дані були, код відповіді тощо.
Виглядає принаймні дуже непогано!

👉 https://www.avanderlee.com/xcode/inspect-network-traffic-simulator/

🇺🇦 iOSDevUA
👍2