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

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

чат: @iOSDevsUAChat
Ідеї та пропозиції: @SergeyZhuravel
Download Telegram
💡Записи Swift Server Side Meetup #2

Apple продовжує організовувати мітапи про серверний Swift. Цього разу в програмі два доклади:

👉 Як деплоїти Vapor на платформу Fly.io за допомогою Docker
👉 Огляд релізу фреймворку Hummingbird 2

Окрім докладів – AMA сесія з учасниками робочої групи Swift on the Server.

🇺🇦 iOSDevUA
💡Swift Testing: аналіз відмінностей і переваг у порівнянні з XCTest

На WWDC цього року Apple представила Swift Testing, новий фреймворк для тестування.

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

Познайомитися з фреймворком можна, переглянувши сесію WWDC24 — у цьому пості.


📖 Приклади використання можна подивитися в цій статті.

🇺🇦 iOSDevUA
💡Про міграцію проєкту на Swift 6.
Рекомендації щодо підходу, обговорення переваг і загалом про те, як зробити це максимально безболісно та плавно! 👍

👉 https://www.avanderlee.com/concurrency/swift-6-migrating-xcode-projects-packages/

🇺🇦 iOSDevUA
💡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