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

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

чат: @iOSDevsUAChat
Ідеї та пропозиції: @SergeyZhuravel
Download Telegram
💡Епізод Swift Talk про Concurrency

Хлопці з Objc.io випустили безкоштовний епізод свого відеоблогу про Swift Concurrency, де на прикладі невеликого macOS додатку розбираються з основними функціями та помилками компіляції.

🇺🇦 iOSDevUA
💡У Apple вийшла серія туторіалів по Instruments про баги з потоками та як їх дебажити

Використовуйте Instruments для аналізу performance, використання ресурсів та поведінки ваших додатків. Дізнайтеся, як покращити відгук, зменшити використання пам’яті та аналізувати складну поведінку з часом.

👉 https://developer.apple.com/tutorials/instruments

🇺🇦 iOSDevUA
💡Підбірка доповідей з iOS Conf SG 2024

📺 Understanding our users – корисне відео, в якому розбираються основи того, що питати у користувачів, щоб розвивати продукт у потрібному напрямку.

📺 Swift beyond Apple platforms — про можливості та проблеми використання Swift від веб-розробки до роботи в embedded-системах.

📺 The Swift Actor Pitfall: Understanding and Managing Reentrancy – розбір неочевидної та простої помилки, пов’язаної зі Swift Concurrency.

Не можна пройти повз і міграцію кодової бази на async/await.

🔗 А весь плейліст з доповідями доступний ось тут.

🇺🇦 iOSDevUA
💡Як працювати зі Swift Data та Core Data у фоновому режимі

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

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

📖 Пол у своєму блозі розглядає цю проблему з різних боків та пропонує свій варіант рішення з використанням одного контейнера та виконання всієї необхідної роботи у бекграунді.

🇺🇦 iOSDevUA
💡Нові статті в документації Apple

Тримайте пачку жовтневих оновлень документації Apple:

👉 Win-back offers – спеціальний тип підписок, спрямований на повернення користувачів, які від вас пішли
👉 Camera Control: HIG та документація
👉 Гайд по підтримці різних розмірів годинників
👉 Нові семпли для visionOS

🇺🇦 iOSDevUA
👍1
💡Genesis – новий генератор статичних сайтів на Swift

Генератор статичних сайтів – один із найпростіших способів створити той самий блог, про який ви давно мріяли. А якщо цей генератор написаний на Swift, ви ще можете погратися з незвичайним застосуванням улюбленої мови.

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

🇺🇦 iOSDevUA
Сергій, iOS розробник, ділиться своїм досвідом оптимізації обробки відео в додатку для соціальних мереж.

Він пояснює використання AVFoundation, асинхронне завантаження ресурсів, а також впровадження AsyncDisplayKit для покращення продуктивності при роботі з UICollectionView.

👉 https://dou.ua/forums/topic/50877/

🇺🇦 iOSDevUA
👍4🔥21
💡Нова вимога до оновлень додатків в ЄС

Починаючи з 17-го жовтня для відправки оновлень додатків в App Store на території Європейського Союзу (ЄС) власникам акаунтів або адміністраторам програми Apple Developer Program необхідно ввести статус торговця в App Store Connect.

Вам треба буде вибрати ваш статус — трейдер / не трейдер.

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

Від 17 лютого 2025 року додатки без статусу торговця будуть видалятися з App Store в ЄС до тих пір, поки статус торговця не буде надано та перевірено з метою дотримання Закону про цифрові послуги.

👉 https://developer.apple.com/news/?id=yfacfeal

🇺🇦 iOSDevUA
💡Рекомендації з оптимізації продуктивності

GitHub-репозиторій з підбіркою статей, інструментів та кейсів оптимізації різних аспектів продуктивності.

🇺🇦 iOSDevUA
Якщо вам раптом дуже хочеться (з якоїсь причини) написати сайт на Swift, звісно, не без HTML, то ось матеріал про те, як це зробити. Тут йдеться про Swift result builder, тому можливо сайт вам і не потрібен, але хоча б про цю частину мови дізнаєтесь 👍

👉 https://www.hackingwithswift.com/articles/266/build-your-next-website-in-swift

🇺🇦 iOSDevUA
💡Малювання кастомних фігур у SwiftUI: приклади та код

У SwiftUI протокол Shape визначає контур нашої в’ю.

Він використовується для малювання та проектування власних фігур або контролів різної складності.

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

🇺🇦 iOSDevUA
Офіційний GitHub Copilot для Xcode 🥳

Open Source і інтегрований безпосередньо в Xcode. Поки в беті.
Встановлюється як додаток — інструкція в README.

👉 https://github.com/github/CopilotForXcode

🇺🇦 iOSDevUA
🔥4
💡Як працювати з passkeys у iOS-додатку

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

Сама пара public + private ключ створюється кожного разу при генерації нового облікового запису.

Щоб отримати доступ до контенту, користувачі можуть використовувати PIN-код або біометрію.

📖 Тут є корисний матеріал про те, як налаштувати passkeys у вашому додатку та приклад реалізації на GitHub.

🇺🇦 iOSDevUA
💡Проектуємо Network Layer в iOS

Звичайно, ідеального рішення не існує.

Але є кілька хороших прикладів (відправних точок) для створення модульного, розширюваного та тестованого мережевого шару в iOS.

У двох великих статтях автор розповідає про свій підхід до реалізації на прикладах:

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

📖 Друга частина присвячена модульним та інтеграційним тестам.

🇺🇦 iOSDevUA
2
💡SpectreKit – бібліотека для консольного UI

SpectreKit – поки що ще сира бібліотека для того, щоб створювати красивий UI для консольних додатків, написаних на Swift.

🇺🇦 iOSDevUA
💡Малювання графіки на Apple Vision за допомогою Metal Rendering API

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

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

Однак є й інший варіант, який був доступний з самого початку: створення власного рушія рендерингу за допомогою Metal API.

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

Знайшов цікаву статтю (яку зберіг для майбутніх експериментів), в якій розглядається безліч цікавих моментів:

📖 Створення та налаштування LayerRenderer.

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

📖 Оновлення та енкодинг для кадрів.

📖 Підтримка стереоскопічного та не-VR рендерингу дисплею.

📖 Рекомендації та поради.

Якщо зараз це здається не дуже актуальним, то через кілька років, на мою думку, подібні пристрої будуть повсюдно використовуватися (наприклад, у медицині або для роботи з високотехнологічними процесами загалом, а навіть ремонтувати авто на просунутих сервісах з авто-підказками – чим не бізнес-ідея).

🇺🇦 iOSDevUA
💡Як почати використовувати Swift Testing

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

Розглянуті основні можливості Swift Testing (а також його відмінності та покращення порівняно з XCTest).

📺 А ось тут цей матеріал представлений у форматі відео.

🇺🇦 iOSDevUA
🧐 iPad як пристрій для розробки

Щороку знаходиться людина, яка розповідає, як iPad повністю замінив йому ноутбук для розробки iOS. Автор статті настільки сильно підтримує ідею, що це повноцінна заміна, що єдиною суттєвою проблемою називає неможливість знімання скріншотів для App Store.

🇺🇦 iOSDevUA
🤯1
Hello iOS developers! New iOS news digest is here!

TestFlight enhancements to help you reach testers:
Beta testing your apps, games, and App Clips is even better with new enhancements to TestFlight. Updates include:
- Redesigned invitations
- Tester enrollment criteria
- Public link metrics
https://developer.apple.com/news

Measuring Performance for iOS Apps at Uber Scale
At Uber, we obsess over delivering highly performant and reliable experiences to our partners and customers. We treat degradations to app performance the same way as any other functional regressions.
Before investing effort into improving performance and reliability, we need to understand how our app is performing in production. We use various tools to derive metrics that allow us to measure app performance and reliability. We also establish baselines to ensure that new feature development is consistent with the high bar we hold for performance and reliability:
https://www.uber.com/en-UA/blog/measuring-performance-for-ios-apps-at-uber-scale

How to use VSCode/Cursor for iOS development
If you are looking for something else than Xcode for iOS development consider using Cursor AI with VSCode for this. Here is a great article about integrating it:
https://dimillian.medium.com/how-to-use-cursor-for-ios-development-54b912c23941

Introducing ReactiveCollectionsKit
Jesse Squires, one of the creators of the IGListKit(Instagram library for displaying flexible list) released new open source project called ReactiveCollectionsKit. It is a modern, fast, and flexible library for building data-driven, declarative, reactive, and diffable collections and lists for iOS. This library is the culmination of everything learned from building and maintaining IGListKit, ReactiveLists, and JSQDataSourcesKit:
https://www.jessesquires.com/blog/2024/10/18/introducing-reactivecollectionskit

Making charts accessible with Swift Charts
Charts enable users to quickly interpret data, but charts are not inherently accessible for people who are blind or have low vision. Apple has made significant efforts to ensure the charts are compatible with Assistive Technologies, particularly VoiceOver.
With Swift Charts, VoiceOver can interpret the data displayed on the chart, extract valuable information, and construct audio graphs automatically, making it accessible to all users. With VoiceOver rotor particularly, users have three different options to access the data:
https://www.createwithswift.com/making-charts-accessible-with-swift-charts

How to Create Interactive TableView in SwiftUI
A Complete Guide to Sorting, Searching, Multi-Selection, and Expanding Rows with TableView in SwiftUI:
https://canopas.com/how-to-create-interactive-table-view-in-swiftui-68aad2f14811

How the Swift compiler knows that DispatchQueue.main implies @MainActor:
https://oleb.net/2024/dispatchqueue-mainactor
1