en
Feedback
iOS Dev

iOS Dev

Open in Telegram

👨‍💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift

Show more
7 878
Subscribers
+324 hours
-27 days
-4630 days
Posts Archive
iOS Dev
7 878
BackgroundTask в SwiftUI: примеры коды и способы тестирования Apple выпустила API под названием BackgroundTask для актуализац
BackgroundTask в SwiftUI: примеры коды и способы тестирования Apple выпустила API под названием BackgroundTask для актуализации контента вашего приложения и выполнения операций, которые займут несколько минут, пока оно работает в фоновом режиме. Следует учитывать, что для выполнения более длительных задач этому API может потребоваться включенное устройство и подключение к сети. Вы указываете, что задача должна выполняться время от времени, а система решает, соответствует ли это активности пользователя. Вы никогда не должны полагаться на такое планирование для чего-то критически важного для вашего приложения. Также важно уточнить, что приложение может запланировать только 1 задачу обновления за раз и 10 задач обработки, запланированных в любое время, как сказано в документе. 📖 В этом материале рассказывается о реализации, а также о необходимом подготовительном этапе. 📖 Важное руководство по работе в фоновом режиме. ℹ️ В Xcode 14.0 был баг в определённых условиях, но согласно этому треду он исправлен в Xcode 14.1 (впрочем, ничего нового). @iOS Dev

iOS Dev
7 878

iOS Dev
7 878
Реализация превью в реальном времени для UIViewController Одной из лучших функций SwiftUI является возможность предварительного просмотра вашего кода во время разработки, но знаете ли вы, что вы также можете использовать SwiftUI для предварительного просмотра ваших старых UIViewControllers и UIView? 📖 И, скорее всего, вы догадались, что в этой статье автор расскажет про то, как использовать протокол UIViewControllerRepresentable, который позволяет создавать и управлять UIViewController из SwiftUI. @iOS Dev

iOS Dev
7 878
Starly + App Store Connect SDK = ProductHunt 📱Новый App Store Connect API можно использовать для получения метаданных прилож
+1
Starly + App Store Connect SDK = ProductHunt 📱Новый App Store Connect API можно использовать для получения метаданных приложений, сборок TestFlight, загрузки отчетов о продажах и многого другого. App Store Connect API соответствует спецификациям OpenAPI и поставляется с богатой документацией от Apple. Недавно Antoine v.d. SwiftLee (автор одноимённого сайта и рассылки с обучающими материалами) выкатил новое SDK для работы с апи аппстора. 📖 Почитать о принципах работы SDK можно в этом материале. На протяжении некоторого времени я изучал возможности SDK, и в твиттере смог решить с Антуаном интересующие меня вопросы. 🎉 В итоге появилось приложение Starly, с помощью которого можно отвечать на отзывы в аппсторе (а ещё переводить их и добавлять шаблоны ответов, и шарить лучшие из них), на данный момент не имеющее ни одного аналога, за исключением стандартного приложения. 💻 Приложение доступно на Mac OS, iPhone и iPad. Я запустил его также на продактханте и впервые прошу вашей помощи: 🟢 Если вы зарегистрированы на ProductHunt, то, пожалуйста: поддержите приложение на портале. 🟢 Или, если вам понравилась идея — установите его и напишите в отзывах, что можно улучшить. @iOS Dev — я рассчитываю на вашу поддержку.

iOS Dev
7 878
Starly + App Store Connect SDK = ProductHunt 📱Новый App Store Connect API можно использовать для получения метаданных прилож
Starly + App Store Connect SDK = ProductHunt 📱Новый App Store Connect API можно использовать для получения метаданных приложений, сборок TestFlight, загрузки отчетов о продажах и многого другого. App Store Connect API соответствует спецификациям OpenAPI и поставляется с богатой документацией от Apple. Недавно Antoine v.d. SwiftLee (автор одноимённого сайта и рассылки с обучающими материалами) выкатил новое SDK для работы с апи аппстора. 📖 Почитать о принципах работы SDK можно в этом материале. На протяжении некоторого времени я изучал возможности SDK, и в твиттере смог решить с Антуаном интересующие меня вопросы. 🎉 В итоге появилось приложение Starly, с помощью которого можно отвечать на отзывы в аппсторе (а ещё переводить их и добавлять шаблоны ответов, и шарить лучшие из них), на данный момент не имеющее ни одного аналога, за исключением стандартного приложения. 💻 Приложение доступно на Mac OS, iPhone и iPad. Я запустил его также на продактханте и впервые прошу вашей помощи: 🟢 Если вы зарегистрированы на ProductHunt, то, пожалуйста: поддержите приложение на портале. 🟢 Или, если вам понравилась идея — установите его и напишите в отзывах, что можно улучшить. @iOS Dev — я рассчитываю на вашу поддержку.

iOS Dev
7 878

iOS Dev
7 878
Новый способ для работы и отображения времени в iOS 16 Duration можно использовать для измерения длительности видеороликов или чтобы отображать время, необходимое для загрузки файла. 🕔 Расчеты с использованием Duration могут применяться как для точности до долей секунды, так и для измерений, охватывающих столетия. 1️⃣ Пример с добавлением миллисекунд. var d: Duration = .seconds(3) d += .milliseconds(33) print(d) // 3.033 seconds 2️⃣ Пример с форматированием в часы и минуты. let timeRemaining: Duration = .seconds(6900) // 01:55 let padHourToLength2 = timeRemaining.formatted( .time(pattern: .hourMinute(padHourToLength: 2)) ) 📖 А о других API для взаимодействия со временем можно прочесть в этом посте. @iOS Dev

iOS Dev
7 878
30 советов, которые можно добавить в набор инструментов iOS-разработчика 📖 Rony Fadel делится своим опытом, рассказывая и о
30 советов, которые можно добавить в набор инструментов iOS-разработчика 📖 Rony Fadel делится своим опытом, рассказывая и о фишках Xcode, и о том, что можно применить в вашем коде уже в следующем проекте. @iOS Dev

iOS Dev
7 878

iOS Dev
7 878
Объяснение взаимоблокировок (deadlocks) в Swift: обнаружение проблем и их способы их решения Взаимоблокировки в Swift могут п
Объяснение взаимоблокировок (deadlocks) в Swift: обнаружение проблем и их способы их решения Взаимоблокировки в Swift могут привести к зависанию вашего приложения, создав неприятную ситуацию как для вас, так и для ваших пользователей. ⏸ В таких ситуациях приложение перестает отвечать на запросы, а единственно возможным решением кажется перезапуск приложения. Хотя такие функции, как акторы, уменьшают количество потенциальных дэдлоков, с которыми вы столкнетесь, вероятность их появления по-прежнему высока. Взаимоблокировки могут иметь несколько причин, и существует несколько способов их обнаружения. 📖 Антуан Ван Дер Ли с помощью своего 10-летнего опыта рассказал о причинах взаимоблокировок и поделился, как можно сузить радиус поиска. @iOS Dev

iOS Dev
7 878
🚀 TradingView Mobile Team продолжает расширяться и ищет iOS разработчиков. Современный стек и подходы Минимизация внешних и внутренних зависимостей. SwiftUI, Combine, async-await, SPM, iOS 14+ Комфортное место работы Удаленка или офис в Москве, Тбилиси, Санкт-Петербурге и Ростове-на-Дону, а также помощь с релокейтом Крутой международный продукт Top-1 в сфере инвестиций и в top-100 по всем сайтам мира. Наши решения используют Тинькофф, БКС, Forbes, Revolut, Interactive Brokers, S&P Global, Чикагская и Бразильская биржи и др. Стабильная компания с надежным положением на рынке 1M+ платящих подписчиков из разных стран мира Сплоченная команда классных специалистов Возможность развиваться и получать поддержку от тиммейтов. Ежемесячные внутренние митапы, локальные воркшопы Как откликнуться? 🏃‍♂️ Если у тебя от 2+ лет опыта разработки пиши @janemanolis

iOS Dev
7 878

iOS Dev
7 878
Что означает ключевое слово «any»? Разбор Type Erasure в Swift Концепция Type Erasure сама по себе не нова для Swift, но она
Что означает ключевое слово «any»? Разбор Type Erasure в Swift Концепция Type Erasure сама по себе не нова для Swift, но она была радикально улучшена в Swift 5.7 с помощью добавления ключевого слова с префиксом anyе путать с написанным с заглавной буквы Any!) и апргрейдом уже существующего ключевого слова some непрозрачного типа (Opaque Type). 📖 В этой статье автор разбирает концепцию Type Erasure: как это происходило раньше, что нового появилось в Swift 5.7 и как эти изменения работают. Материал содержит следующие основные блоки: ⚪ Что, черт возьми, представляет Type Erasure на самом деле? ⚪ Swift 5.7: новое ключевое слово any. ⚪ Вспомогательные функции и расширение возможностей: opaque parameters, primary associated types. @iOS Dev

iOS Dev
7 878
Знали ли вы, что первоначально Swift назывался Shiny? Так почему же мы называем его свифтом? Я решил поискать причины, и ниже расскажу вам короткую, но интересную историю, а поможет нам Крис Латтнер (создатель свифта, LLVM и компилятора Clang). Далее, с его слов. На самом деле, изменение названия произошло уже тогда, когда дело близилось к запуску. ⭐️ Shiny было кодовым именем. Многие вещи в Apple тогда, да и вообще во многих компаниях, когда вы начинаете, имели временное название. Если быть более точным, то в 2010 году даже был каталог на ноутбуке Криса. И когда вам нужно выбирать имя проекта, вы понятия не имели, во что оно превратится в итоге. Название Shiny появилось потому, что язык можно было назвать новой блестящей штуковиной. 📺 Это была отсылка к «Светлячку» - телесериалу, который очень хорош (лично я подтверждаю, сериал смотрится легко даже спустя столько времени). Но по мере развития проекта и вовлечения в него все большего количества людей стало ясно, что это не лучший способ представить и донести до разработчиков то, о чем идет речь. Ведь к тому времени команда уже гораздо лучше представляла, что именно они пытаются достичь. За три месяца до запуска Крис с командой начали думать о том, какое название будет правильным. Приходилось заниматься поиском торговых марок; это очень сложно. 🤔 Оказалось, что есть еще один язык под названием Swift — маленький исследовательский язык, по сути. Как и в случае с именованием в компьютерных API, именование продуктов - это сложно, потому что все хорошие имена уже заняты, и это действительно очень, очень сложная проблема. В итоге они остановились на слове Swift, так как оно подразумевает правильные вещи. Кроме того, оно оказалось точно такой же длины, как Shiny, так что это значительно упростило пересмотр истории в системе контроля версий! Ещё один интересный факт со слов Джордан Роуз, магическое число для модулей Swift это блестящий (shiny) или сверкающий эмодзи. Крис Латтнер добавил, что магические числа это старая школа Unix и, конечно, Swift будет использовать эмодзи. Так что shiny всегда будет где-то там, вместе с нами. @iOS Dev❤️, если вы смотрели «Светлячка»

iOS Dev
7 878
Как 5 приложений для iOS могут сократить время запуска в среднем на 28% 📖 Занимательное исследование от Emerge tools поможет
Как 5 приложений для iOS могут сократить время запуска в среднем на 28% 📖 Занимательное исследование от Emerge tools поможет разобраться в этом. Ведь важна каждая миллисекунда (или нет?). ℹ️ Время запуска — важная метрика приложения, которую следует постоянно отслеживать и улучшать. A/B-тесты в ведущих компаниях, занимающихся мобильными приложениями, постоянно показывают, что увеличение времени запуска всего лишь на долю секунды может значительно повредить основным показателям использования, таким как количество активных пользователей в день и время, затрачиваемое на приложение на пользователя в день. Lyft сообщила об увеличении количества пользовательских сеансов на 5% благодаря сокращению времени запуска их приложения для водителей на 21%. ⏳ Apple сделала время запуска предметом многочисленных презентаций #WWDC (раз, два, три). Плюс статьи в том, что это настоящие оптимизации, которые применяются к публичным сборкам App Store без участия разработчиков. 😳 Интересный факт! Приложение Zoom фактически тратит 41 мс на usleep в основном потоке во время запуска. В любом случае, управление производительностью мобильного приложения является чрезвычайно сложной задачей. @iOS Dev

iOS Dev
7 878
Отображение данных в реальном времени с помощью Live Activity и Dynamic Island Материал о том, как создавать интерактивные де
Отображение данных в реальном времени с помощью Live Activity и Dynamic Island Материал о том, как создавать интерактивные действия, которые отображают самые последние данные вашего приложения в Dynamic Island и на экране блокировки. Чтобы предлагать интерактивные действия, добавьте код в существующее расширение виджета или создайте новое. Live Activity используют функциональность WidgetKit и SwiftUI для пользовательского интерфейса. Роль ActivityKit заключается в управлении жизненным циклом каждого Live Activity: мы можем использовать его API для запроса, обновления и завершения Live Activity. 📖 В официальной документации Apple рассматриваются следующие аспекты: 🔘 Требования и ограничения Live Activity. 🔘 Как добавить поддержку Live Activity в свое приложение. 🔘 Как определить набор статических и динамических данных. 🔘 Создание конфига для вашей Live Activity. 🔘 Создание Lock Screen view. 🔘 Создание compact, minimal и expanded views. 🔘 Как стартовать и обновлять Live activity. ℹ️ Важно! Live Activity в настоящий момент доступны только на iPhone. ℹ️ Размер обновленных динамических данных как для обновлений ActivityKit, так и для push-уведомлений не может превышать 4 КБ. @iOS Dev

iOS Dev
7 878
Как обновить содержимое ячейки при использовании UIHostingConfiguration 🔄 Когда речь идет о работе с таблицей или коллекцией
Как обновить содержимое ячейки при использовании UIHostingConfiguration 🔄 Когда речь идет о работе с таблицей или коллекцией, важно убедиться, что модель данных всегда синхронизирована с тем, что отображается на экране. При создании пользовательского интерфейса с использованием UITableView или UICollectionView всегда приходилось вручную следить за тем, чтобы все было синхронизировано. С появлением UIHostingConfiguration в iOS 16 мы наконец-то можем использовать возможности двустороннего биндинга (связывания), которое существует только в SwiftUI. Благодаря этому iOS возьмет на себя тяжелую работу по синхронизации модели данных и содержимого ячейки. Это означает, что нам больше не нужно вызывать reloadItems(at:) для обновления ячейки или вызывать reconfigureItems(at:) для обновления снэпшота. 📖 Изменения звучат интригующе, рекомендую прочесть этот материал, или сразу перейти к репозиторию с примерами кода. @iOS Dev

iOS Dev
7 878
Создание гистограммм с помощью SwiftUI Charts в iOS 16 На WWWDC 2022 Apple представила диаграммы SwiftUI, которые упрощают со
Создание гистограммм с помощью SwiftUI Charts в iOS 16 На WWWDC 2022 Apple представила диаграммы SwiftUI, которые упрощают создание различных графиков в SwiftUI. 📖 В этой статье показано, как быстро создать и настроить диаграммы, содержащие несколько наборов данных. @iOS Dev P.S. В посте выше было скрыто поздравление с нашим профессиональным праздником 🎉 (подсказки ASCII и UTF-32, а дальше дело техники). Кстати, справились с задачей и дошли до последнего шага двое читателей, моё почтение!

iOS Dev
7 878
QUFBRUlRQUFBQ0FBQUFRVUFBQUVQUUFBQkZFQUFBUThBQUFBSUFBQUJCOEFBQVJBQUFBRVBnQUFCRE1BQUFSQUFBQUVNQUFBQkR3QUFBUThBQUFFT0FBQUJFRUFBQVJDQUFBRU1BQUFBQ0FBQUFRK0FBQUVRZ0FBQUNBQUFBQnBBQUFBVHdBQUFGTUFBQUFnQUFBQVJBQUFBR1VBQUFCMkFBQUFMQUFBQUNBQUFBUStBQUFFUndBQUJEVUFBQVE5QUFBRVRBQUFBQ0FBQUFRNkFBQUVRQUFBQkVNQUFBUkNBQUFFUGdBQUFDd0FBQUFnQUFBRVJ3QUFCRUlBQUFRK0FBQUFJQUFBQkVNQUFBQWdBQUFFUWdBQUJEVUFBQVF4QUFBRVR3QUFBQ0FBQUFRL0FBQUVQZ0FBQkRzQUFBUkRBQUFFUndBQUJEZ0FBQVE3QUFBRVBnQUFCRUVBQUFSTUFBQUFJQUFBQkVBQUFBUXdBQUFFTndBQUJETUFBQVF3QUFBRU5BQUFCREFBQUFSQ0FBQUVUQUFBQUNBQUFBUk5BQUFFUWdBQUJENEFBQVJDQUFBQUlBQUFCRG9BQUFRK0FBQUVOQUFBQUNFQUFBQUtBQUFFSHdBQUJENEFBQVJCQUFBRVFnQUFCREFBQUFReUFBQUVUQUFBQUNBQUFmUEdBQUFBSUFBQUJESUFBQUFnQUFBRVRRQUFCRUlBQUFRK0FBQUVQQUFBQUNBQUFBUS9BQUFFUGdBQUJFRUFBQVJDQUFBRU5RQUFBQ3dBQUFBZ0FBQUVSd0FBQkVJQUFBUStBQUFFTVFBQUJFc0FBQUFnQUFBRU5BQUFCRDRBQUFRNkFBQUVNQUFBQkRjQUFBUXdBQUFFUWdBQUJFd0FBQUFzQUFBQUlBQUFCRWNBQUFSQ0FBQUVQZ0FBQUNBQUFBUkRBQUFBSUFBQUJFSUFBQVExQUFBRU1RQUFCRThBQUFBZ0FBQUVQd0FBQkQ0QUFBUTdBQUFFUXdBQUJFY0FBQVE0QUFBRU93QUFCRDRBQUFSQkFBQUVUQUFBQUNrQUFBQWdBQUFBYUFBQUFIUUFBQUIwQUFBQWNBQUFBSE1BQUFBNkFBQUFMd0FBQUM4QUFBQjBBQUFBTGdBQUFHMEFBQUJsQUFBQUx3QUFBR2tBQUFCUEFBQUFVd0FBQUY4QUFBQkRBQUFBWVFBQUFISUFBQUJsQUFBQVpRQUFBSElBQUFBdkFBQUFNZ0FBQURNPQ== Hint: Стандарт ISO 646 (ECMA-6) предусматривает возможность размещения национальных символов. -> Стандарт ISO 10646 определяет 31-битную форму кодировки, названную UCS-4.

iOS Dev
7 878
Как использовать UIViewController в SwiftUI?SwiftUI и UIKit будут сосуществовать еще долгое время. Какой бы фреймворк вы ни использовали, вероятнее всего возникнут ситуации, когда вам нужно использовать оба. К счастью, Apple упрощает перенос кода UIKit в SwiftUI. 📖 В этой статье объясняется, как использовать UIViewController в качестве View в SwiftUI. @iOS Dev