💡Використовуємо SwiftUI з CLI
Приклад того, як за допомогою класу
🇺🇦 iOSDevUA
Приклад того, як за допомогою класу
ImageRenderer зі SwiftUI можна створити консольний інструмент, який буде додавати бейджі на іконку додатка.🇺🇦 iOSDevUA
www.swifttoolkit.dev
Using SwiftUI in Command Line Tools
You can take advantage of SwiftUI even in your command line tools
Завантаження картинок з диска 🏞
Річ, про яку рідко замислюєшся в процесі розробки, але вона може мати дуже несподівані й негативні наслідки.
Ось стаття, де автор розбирає, як це працює і скільки пам’яті споживає 👍
👉 https://www.avanderlee.com/swiftui/memory-consumption-loading-uiimage-from-disk/
🇺🇦 iOSDevUA
Річ, про яку рідко замислюєшся в процесі розробки, але вона може мати дуже несподівані й негативні наслідки.
Ось стаття, де автор розбирає, як це працює і скільки пам’яті споживає 👍
👉 https://www.avanderlee.com/swiftui/memory-consumption-loading-uiimage-from-disk/
🇺🇦 iOSDevUA
💡Async await у Swift: набір інструментів
📖 У блозі Emerge Tools вийшла велика стаття, в якій розглянуто багато методів зі Swift Concurrency.
З важливого: для кожного інструменту наведено приклади коду та розглянуто теорію.
🇺🇦 iOSDevUA
📖 У блозі Emerge Tools вийшла велика стаття, в якій розглянуто багато методів зі Swift Concurrency.
З важливого: для кожного інструменту наведено приклади коду та розглянуто теорію.
🇺🇦 iOSDevUA
👍4❤3
💡Розгорнутий гайд по роботі з App Store Connect API
Виконання дій вручну на сайті App Store Connect, ймовірно, найпоширеніший спосіб для розробників керувати та відстежувати стан додатків в App Store.
Але деякі завдання можуть займати невиправдано багато часу, оскільки для їх виконання потрібно постійно повторювати одні й ті ж дії. Також сайт не завжди показує коректний опис помилок (наприклад, при завантаженні скріншотів).
Ось бібліотеки, які можуть допомогти при роботі з App Store Connect API:
🔗 appstoreconnect-swift-sdk
🔗 Bagbutik
🔗 asc-swift
Нижче перераховані статті, що демонструють способи створення власних засобів автоматизації за допомогою App Store Connect API:
1️⃣ Як надсилати запити до App Store Connect API.
2️⃣ Розрахунок середнього рейтингу відгуків.
3️⃣ Робота з provisioning profiles.
4️⃣ Створення та видалення сертифікатів.
🇺🇦 iOSDevUA
Виконання дій вручну на сайті App Store Connect, ймовірно, найпоширеніший спосіб для розробників керувати та відстежувати стан додатків в App Store.
Але деякі завдання можуть займати невиправдано багато часу, оскільки для їх виконання потрібно постійно повторювати одні й ті ж дії. Також сайт не завжди показує коректний опис помилок (наприклад, при завантаженні скріншотів).
Ось бібліотеки, які можуть допомогти при роботі з App Store Connect API:
🔗 appstoreconnect-swift-sdk
🔗 Bagbutik
🔗 asc-swift
Нижче перераховані статті, що демонструють способи створення власних засобів автоматизації за допомогою App Store Connect API:
1️⃣ Як надсилати запити до App Store Connect API.
2️⃣ Розрахунок середнього рейтингу відгуків.
3️⃣ Робота з provisioning profiles.
4️⃣ Створення та видалення сертифікатів.
🇺🇦 iOSDevUA
GitHub
GitHub - AvdLee/appstoreconnect-swift-sdk: The Swift SDK to work with the App Store Connect API from Apple.
The Swift SDK to work with the App Store Connect API from Apple. - AvdLee/appstoreconnect-swift-sdk
👍1
Media is too big
VIEW IN TELEGRAM
💡Swift Translation API: приклади реалізації
До анонсу цього фреймворка в пет-проєктах я використовував або Google Translate API, або DeepL (знаю, що багато хто використовує рішення від OpenAI).
📶 Але для них потрібне інтернет-з’єднання (що логічно), і гроші (наприклад, DeepL має преміум-акаунт, де потрібно платити за обсяг символів).
Тому анонс рішення Apple виглядає як криптоніт для багатьох проєктів і водночас можливість реалізації власних рішень.
Подивимося, що буде після виходу в продакшн, чи перейдуть на платну модель, як з Weather API, чи залишать всі фічі, як є.
📖 А вже зараз можна подивитися на приклад створення додатків з новим фреймворком і прочитати чудовий розбір API тут.
🇺🇦 iOSDevUA
До анонсу цього фреймворка в пет-проєктах я використовував або Google Translate API, або DeepL (знаю, що багато хто використовує рішення від OpenAI).
📶 Але для них потрібне інтернет-з’єднання (що логічно), і гроші (наприклад, DeepL має преміум-акаунт, де потрібно платити за обсяг символів).
Тому анонс рішення Apple виглядає як криптоніт для багатьох проєктів і водночас можливість реалізації власних рішень.
Подивимося, що буде після виходу в продакшн, чи перейдуть на платну модель, як з Weather API, чи залишать всі фічі, як є.
📖 А вже зараз можна подивитися на приклад створення додатків з новим фреймворком і прочитати чудовий розбір API тут.
🇺🇦 iOSDevUA
👍1
🚀 Live Activity в Uber
Uber поділилися своїм досвідом розробки Live Activity. З технічної сторони все досить тривіально, а ось продуктові результати цікаві:
👉 На 2,3% менше скасувань замовлень водієм
👉 На 2,1% менше скасувань замовлень пасажиром
Таким чином, завдяки більш прозорому статусу замовлення знижуються шанси того, що пасажир забуде про таксі.
🇺🇦 iOSDevUA
Uber поділилися своїм досвідом розробки Live Activity. З технічної сторони все досить тривіально, а ось продуктові результати цікаві:
👉 На 2,3% менше скасувань замовлень водієм
👉 На 2,1% менше скасувань замовлень пасажиром
Таким чином, завдяки більш прозорому статусу замовлення знижуються шанси того, що пасажир забуде про таксі.
🇺🇦 iOSDevUA
👍2
Hello iOS developers! New digest is here!
Hello everyone! New iOS weekly digest is here!
If you ever thought about going indie do not miss this article from Antoine var der Lee about this success story:
https://www.avanderlee.com/general/from-side-project-to-going-indie
A Paywall Optimization Success Story
The motivation, process, and results of a recent paywall experiment that significantly boosted conversions for Foodnoms:
https://ryanashcraft.com/paywall-optimization-success-story/
Async await in Swift: The Full Toolkit
Today, we're going through the many techniques in the Swift Concurrency toolkit. We'll discuss theory when it's appropriate, but for each tool we'll also provide a context where it might be the best solution:
https://www.emergetools.com/blog/posts/swift-async-await-the-full-toolkit
Unfold's Modern Mobile Release Process and the Subtle Art of Making Them Boring
On the Unfold team at Squarespace, we build our mobile app for both iOS and Android, and our releases don't require much in the way of manual intervention or human oversight. In fact, we don’t have to give releases much thought at all:
https://engineering.squarespace.com/blog/2024/unfolds-modern-mobile-release-process-and-the-subtle-art-of-making-them-boring
If you ever worked with Objective-C, you probably have some opinion about using it, check this article about comparison Objective-C and Swift
Swift vs. Objective-C: Which is Better for iOS Development:
https://dev.to/ravi_makhija/swift-vs-objective-c-which-is-better-for-ios-development-om3
Unobtrusive and testable issue reporting
Developers from PointFree are happy to anounce about creating a new library: Issue Reporting. This library provides tools to report issues in your application and library code as Xcode runtime warnings, breakpoints, assertions, and do so in a testable manner:
https://www.pointfree.co/blog/posts/147-unobtrusive-and-testable-issue-reporting
Hello everyone! New iOS weekly digest is here!
If you ever thought about going indie do not miss this article from Antoine var der Lee about this success story:
https://www.avanderlee.com/general/from-side-project-to-going-indie
A Paywall Optimization Success Story
The motivation, process, and results of a recent paywall experiment that significantly boosted conversions for Foodnoms:
https://ryanashcraft.com/paywall-optimization-success-story/
Async await in Swift: The Full Toolkit
Today, we're going through the many techniques in the Swift Concurrency toolkit. We'll discuss theory when it's appropriate, but for each tool we'll also provide a context where it might be the best solution:
https://www.emergetools.com/blog/posts/swift-async-await-the-full-toolkit
Unfold's Modern Mobile Release Process and the Subtle Art of Making Them Boring
On the Unfold team at Squarespace, we build our mobile app for both iOS and Android, and our releases don't require much in the way of manual intervention or human oversight. In fact, we don’t have to give releases much thought at all:
https://engineering.squarespace.com/blog/2024/unfolds-modern-mobile-release-process-and-the-subtle-art-of-making-them-boring
If you ever worked with Objective-C, you probably have some opinion about using it, check this article about comparison Objective-C and Swift
Swift vs. Objective-C: Which is Better for iOS Development:
https://dev.to/ravi_makhija/swift-vs-objective-c-which-is-better-for-ios-development-om3
Unobtrusive and testable issue reporting
Developers from PointFree are happy to anounce about creating a new library: Issue Reporting. This library provides tools to report issues in your application and library code as Xcode runtime warnings, breakpoints, assertions, and do so in a testable manner:
https://www.pointfree.co/blog/posts/147-unobtrusive-and-testable-issue-reporting
SwiftLee
Going Indie: From Side Project to Going Independent
Discover the journey of going from a full-time job to becoming an indie developer, transforming side projects into a six-figure revenue.
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Анімації в SwiftUI — підбірка репозиторіїв на GitHub
Реалізація ефектів у додатках може бути одночасно і цікавою, і складною задачею.
У цій підбірці я додав кілька популярних репозиторіїв на GitHub, де можна подивитися на анімації та знайти натхнення:
🔗 Open SwiftUI Animations — 4 000⭐
🔗 SwiftUI-Animations — 1 800⭐
🔗 kavsoft-swiftui-animations — 460⭐
🇺🇦 iOSDevUA
Реалізація ефектів у додатках може бути одночасно і цікавою, і складною задачею.
У цій підбірці я додав кілька популярних репозиторіїв на GitHub, де можна подивитися на анімації та знайти натхнення:
🔗 Open SwiftUI Animations — 4 000
🔗 SwiftUI-Animations — 1 800
🔗 kavsoft-swiftui-animations — 460
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
💡Патерни навігації у SwiftUI
NavigationStack покращив навігацію, забезпечивши динамічну та програмну маршрутизацію, а також з’явилися способи централізації маршрутів для всього додатка.
📖 У цій статті розглядаються загальні варіанти навігації, які можна використовувати при створенні додатків:
👉 Базова навігація при використанні List
👉 Динамічна програмна маршрутизація
👉 Глобальна маршрутизація в SwiftUI
👉 Реалізація навігації з використанням Environment Values
👉 Реалізація навігації для TabView.
🇺🇦 iOSDevUA
NavigationStack покращив навігацію, забезпечивши динамічну та програмну маршрутизацію, а також з’явилися способи централізації маршрутів для всього додатка.
📖 У цій статті розглядаються загальні варіанти навігації, які можна використовувати при створенні додатків:
👉 Базова навігація при використанні List
👉 Динамічна програмна маршрутизація
👉 Глобальна маршрутизація в SwiftUI
👉 Реалізація навігації з використанням Environment Values
👉 Реалізація навігації для TabView.
🇺🇦 iOSDevUA
🚀Анонсовано Swift Homomorphic Encryption, новий пакет, який підтримує обчислення в приватній хмарі з використанням найсучасніших криптографічних технік. 🕵️🤐
Детальніше читайте: https://www.swift.org/blog/announcing-swift-homomorphic-encryption/
🇺🇦 iOSDevUA
Детальніше читайте: https://www.swift.org/blog/announcing-swift-homomorphic-encryption/
🇺🇦 iOSDevUA
Swift.org
Announcing Swift Homomorphic Encryption
We’re excited to announce a new open source Swift package for homomorphic
encryption in Swift:
swift-homomorphic-encryption.
encryption in Swift:
swift-homomorphic-encryption.
⚡1🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Створення файлу з коду в буфері обміну в Xcode 16
Одна з найбільш приємних (якщо не топових) функцій у новому Xcode — нова можливість рефакторингу (і не тільки).
Наприклад, можна буквально за пару секунд скопіювати будь-який шматок коду і створити з нього файл за допомогою хоткею для вставки.
При цьому Xcode ще й сам підбере та задасть підходящу назву (наприклад, як на гіфці).
🇺🇦 iOSDevUA
Одна з найбільш приємних (якщо не топових) функцій у новому Xcode — нова можливість рефакторингу (і не тільки).
Наприклад, можна буквально за пару секунд скопіювати будь-який шматок коду і створити з нього файл за допомогою хоткею для вставки.
При цьому Xcode ще й сам підбере та задасть підходящу назву (наприклад, як на гіфці).
🇺🇦 iOSDevUA
❤7
This media is not supported in your browser
VIEW IN TELEGRAM
💡Думаю, багато хто знайомий з CAEmitterLayer, чи не так?
Натрапив на стару, але досить корисну статтю про CAEmitterBehavior. З допомогою цього класу можна гнучкіше налаштувати параметри анімації частинок CAEmitterLayer. Наприклад, Telegram використовує зв’язку з кількох behavior об’єктів для створення ефекту “спойлер”.
Цікаво, що з якоїсь причини Apple приховує існування такого інструменту, а документацію та доступ до неї можна отримати тільки за наявності Xcode 8.x.
🔗 Посилання на статтю
🇺🇦 iOSDevUA
Натрапив на стару, але досить корисну статтю про CAEmitterBehavior. З допомогою цього класу можна гнучкіше налаштувати параметри анімації частинок CAEmitterLayer. Наприклад, Telegram використовує зв’язку з кількох behavior об’єктів для створення ефекту “спойлер”.
Цікаво, що з якоїсь причини Apple приховує існування такого інструменту, а документацію та доступ до неї можна отримати тільки за наявності Xcode 8.x.
🔗 Посилання на статтю
🇺🇦 iOSDevUA
👍2❤1
💡Автор, чиї статті ми часто публікуємо, розповідає про те, як він наважився залишити основну роботу та піти у вільне плавання. У цьому йому, звичайно, допоміг його pet-проєкт, про який ми тут теж часто розповідали.
Тепер він заробляє на ньому і планує розвивати далі. І в цілому розповідає про шлях розвитку цього проєкту та як він дійшов до точки, коли і чому вирішив піти з компанії, де пропрацював 7,5 років 👍
👉https://www.avanderlee.com/general/from-side-project-to-going-indie/
🇺🇦 iOSDevUA
Тепер він заробляє на ньому і планує розвивати далі. І в цілому розповідає про шлях розвитку цього проєкту та як він дійшов до точки, коли і чому вирішив піти з компанії, де пропрацював 7,5 років 👍
👉https://www.avanderlee.com/general/from-side-project-to-going-indie/
🇺🇦 iOSDevUA
SwiftLee
Going Indie: From Side Project to Going Independent
Discover the journey of going from a full-time job to becoming an indie developer, transforming side projects into a six-figure revenue.
💡Якщо використовуєте SwiftUI, то, мабуть, знаєте про ScenePhase, які з’явилися ще в iOS 14. Це все про життєвий цикл додатка і роботу з ним. Для тих же цілей (приблизно) був і UIApplicationDelegateAdaptor. Ось стаття про всі ці взаємодії та про баги, які там є.
У статті розглядаються не лише iOS, а й macOS та баги, пов’язані з ними також.
👉 https://www.jessesquires.com/blog/2024/06/29/swiftui-scene-phase/
🇺🇦 iOSDevUA
У статті розглядаються не лише iOS, а й macOS та баги, пов’язані з ними також.
👉 https://www.jessesquires.com/blog/2024/06/29/swiftui-scene-phase/
🇺🇦 iOSDevUA
Jesse Squires
SwiftUI app lifecycle: issues with ScenePhase and using AppDelegate adaptors
SwiftUI introduced the ScenePhase API in iOS 14 and macOS 11. This was SwiftUI’s answer to handling application lifecycle events. At the same time, SwiftUI i...
❤1
💡Виявлення flaky тестів у Tuist
Tuist тепер вміє визначати тести, які дають неконсистентні результати, хоча ні сам тест, ні тестований код не змінювалися.
🇺🇦 iOSDevUA
Tuist тепер вміє визначати тести, які дають неконсистентні результати, хоча ні сам тест, ні тестований код не змінювалися.
🇺🇦 iOSDevUA
💡Issue Reporting – бібліотека для відображення попереджень у Xcode
Issue Reporting – нова бібліотека від Pointfree, яка допомагає швидко показувати попередження та асерти прямо з коду. Окрім відображення тултіпа, можна ще й автоматично активувати брейкпойнт у момент показу сповіщення.
🇺🇦 iOSDevUA
Issue Reporting – нова бібліотека від Pointfree, яка допомагає швидко показувати попередження та асерти прямо з коду. Окрім відображення тултіпа, можна ще й автоматично активувати брейкпойнт у момент показу сповіщення.
🇺🇦 iOSDevUA
Знаєте, що це за макрос
Якщо ні, то ось стаття з деталями про це!
👉 https://digitalbunker.dev/debug-description-macro-xcode-16/
🇺🇦 iOSDevUA
@DebugDescription у Xcode 16?Якщо ні, то ось стаття з деталями про це!
👉 https://digitalbunker.dev/debug-description-macro-xcode-16/
🇺🇦 iOSDevUA
Digital Bunker
Using @DebugDescription in Xcode 16
Learn how the CustomDebugStringConvertible protocol and @DebugDescription macro in Xcode 16 enhance debugging by providing clear, custom debug outputs.
😍1
💡Swift Navigation: інструменти навігації від PointFree
PointFree випустили у відкритий доступ бібліотеку Swift Navigation — набір потужних інструментів для всіх платформ Swift (як натхнення використовувалися принципи SwiftUI).
За допомогою бібліотеки можна керувати навігацією в SwiftUI, UIKit та AppKit. Більш того, її можна використовувати і для платформ, відмінних від Apple, таких як Windows, Linux, Wasm тощо.
🛠 Інструментарій вже доступний на GitHub (1 900 ⭐️)
Приклади роботи доступні тут:
📖 Case Studies — колекція прикладів SwiftUI та UIKit, що демонструють API цієї бібліотеки.
📖 Inventory — багатосторінковий додаток зі списками, спливаючими вікнами та сповіщеннями.
🇺🇦 iOSDevUA
PointFree випустили у відкритий доступ бібліотеку Swift Navigation — набір потужних інструментів для всіх платформ Swift (як натхнення використовувалися принципи SwiftUI).
За допомогою бібліотеки можна керувати навігацією в SwiftUI, UIKit та AppKit. Більш того, її можна використовувати і для платформ, відмінних від Apple, таких як Windows, Linux, Wasm тощо.
🛠 Інструментарій вже доступний на GitHub (1 900 ⭐️)
Приклади роботи доступні тут:
📖 Case Studies — колекція прикладів SwiftUI та UIKit, що демонструють API цієї бібліотеки.
📖 Inventory — багатосторінковий додаток зі списками, спливаючими вікнами та сповіщеннями.
🇺🇦 iOSDevUA
❤1
💡Swift Foundation доступний у Swift 6 Nightly
Пам’ятаєте план Apple переписати Foundation на Swift? Так от, частково переписаний Swift Foundation вже доступний у нічних збірках Swift 6, причому підтримує навіть Linux та Windows.
🇺🇦 iOSDevUA
Пам’ятаєте план Apple переписати Foundation на Swift? Так от, частково переписаний Swift Foundation вже доступний у нічних збірках Swift 6, причому підтримує навіть Linux та Windows.
🇺🇦 iOSDevUA
👍2
💡Як вирішити проблему з констрейнтами або як бути з помилками типу «will attempt to recover by breaking constraint»?
Багато хто вже використовує SwiftUI у продакшн або пет-проєктах. Незважаючи на це, UIKit нікуди не зникає, а проблеми з автолейаутом зустрічаються досить часто.
Хотів би нагадати про трюк, а точніше, мастхев-навичку при пошуку подібних проблемних в’ю за допомогою стандартних інструментів Xcode.
Якщо ви зустрінете таку помилку (або її варіації):
Запустіть View Debugger і вставте айдішник проблемної в’ю у поле пошуку зліва внизу. Xcode автоматично підсвітить її, і вже після цього ви зможете спокійно усунути цю проблему.
⭐️ А ще є надзвичайно корисний сайт, який часто може допомогти в таких ситуаціях.
🇺🇦 iOSDevUA
Багато хто вже використовує SwiftUI у продакшн або пет-проєктах. Незважаючи на це, UIKit нікуди не зникає, а проблеми з автолейаутом зустрічаються досить часто.
Хотів би нагадати про трюк, а точніше, мастхев-навичку при пошуку подібних проблемних в’ю за допомогою стандартних інструментів Xcode.
Якщо ви зустрінете таку помилку (або її варіації):
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xb82d450 H:[UIButton:0xb82ad50]-(NSSpace(20))-| (Names: ‘|’:UIView:0xb82f360 )>
Запустіть View Debugger і вставте айдішник проблемної в’ю у поле пошуку зліва внизу. Xcode автоматично підсвітить її, і вже після цього ви зможете спокійно усунути цю проблему.
⭐️ А ще є надзвичайно корисний сайт, який часто може допомогти в таких ситуаціях.
🇺🇦 iOSDevUA
💡Конвертація XCTest у swift-testing
swift-testing-revolutionary – інструмент, який автоматично конвертує всі ваші XCTest у новий формат swift-testing. Працює як плагін для Xcode, так і як самостійний CLI тул. Поки що не підтримується ряд анотацій, але більшість тестів вже можуть бути сконвертовані.
🇺🇦 iOSDevUA
swift-testing-revolutionary – інструмент, який автоматично конвертує всі ваші XCTest у новий формат swift-testing. Працює як плагін для Xcode, так і як самостійний CLI тул. Поки що не підтримується ряд анотацій, але більшість тестів вже можуть бути сконвертовані.
🇺🇦 iOSDevUA