Вдогонку к утренней статье расшифровка доклада Романа Волкова про
AVAudioSession
и распознавание речи, с обходом существующих багов и особенностями работы с этими API.Хабр
Make <your iOS app> talk. Доклад Яндекса
Cтандартные библиотеки распознавания речи и озвучки текста в iOS дают массу возможностей. Из доклада VolkovRoman вы узнаете, как за счёт минимального количества кода научить ваше приложение...
👍19💩2❤1
Вопрос #8 из State of iOS Toolchain 2022. Какие архитектурные подходы используете?
Anonymous Poll
32%
MVC
52%
MVVM
25%
VIPER
8%
Redux
5%
TCA
3%
RIBs
18%
CleanSwift
9%
Другое
8%
Не использую универсальных архитектурных решений
11%
Посмотреть результаты
👍2
Координаторы устарели. Да здравствуют Навигаторы! Автор статьи описывает свой подход к реализации навигации в приложении: типобезопасный, отделяемый от бизнес-логики, позволяющий легко расширять архитектуру. Если найдете отличия от координаторов, дайте знать.
Medium
Seaworthy mobile applications know how to navigate
Ahoy fellow buccaneers! You might have been in this game a long while or you might just be starting out, whichever rings true, I think we…
💩25😁10👍5👎1🤔1
Разбор сильных и слабых сторон DocC для сценария публикации сгенерированной документации на GitHub.
Jesse Squires
Using DocC on GitHub Pages
When I first wrote about DocC, I lamented the fact that it was incompatible with static hosting on GitHub Pages. Much has changed since my last post, so let’...
👍4
Вопрос #9 из State of iOS Toolchain 2022. Как организован код у вас в проекте?
Anonymous Poll
32%
По слоям
36%
По фичам
30%
По компонентам
21%
Все вперемешку
3%
Другое
15%
Посмотреть результаты
👎24👍3
MockingKit – это Swift библиотека для создания удобных динамических моков протоколов и классов. В отличие от моков, создаваемых вручную, в этом случае не придется реализовывать внутреннюю логику руками. Моки автоматически будут записывать, кто и сколько раз к ним обратился, и какую информацию передал.
👍17🔥2
Environment в SwiftUI работает как словарь, в котором каждому ключу соответствует определенный тип данных. Например,
isEnabled
гарантированно содержит Boolean, а font
– Optional<Font>.
Держите Gist с реализацией аналогичной структуры данных, и статью про особенности ее использования.Gist
Code for my article "A heterogeneous dictionary with strong types in Swift" https://oleb.net/2022/heterogeneous-dictionary/
Code for my article "A heterogeneous dictionary with strong types in Swift" https://oleb.net/2022/heterogeneous-dictionary/ - HeterogeneousDictionary.swift
👍6💩2🤔1
Вопрос #10 из State of iOS Toolchain 2022. Какие языки вы используете для скриптинга и автоматизации своих задач?
Anonymous Poll
44%
Bash
26%
Python
31%
Ruby
32%
Swift
2%
Kotlin
5%
JavaScript/TypeScript
3%
AppleScript
3%
Другое
16%
Не использую никаких
14%
Посмотреть результаты
Любое приложение, которое делает https запросы, спамит в консоль логами вида
[boringssl] boringssl_metrics_log_metric_block_invoke(151) Failed to log metrics
. Автор статьи раскапывает причину их появления с помощью дизассемблера и находит способ, как их можно заглушить.Хабр
[boringssl] Failed to log metrics
Наверное, каждый iOS разработчик сталкивался с этой проблемой. Любое приложение, которое делает https запросы, получает в лог эти мистические сообщения от boringssl : [boringssl]...
🔥46👍6
SwiftNIO в ближайшем релизе дропают поддержку CocoaPods, с рекомендацией всем пользователям переходить на SPM. Основная причина – релиз в CocoaPods довольно трудоемкий, требует поддержки кучи podspec и постоянного разбора проблем подов. Кажется, первая ласточка того, что использование библиотеками CocoaPods будет постепенно снижаться.
Swift Forums
SwiftNIO is dropping support for CocoaPods
Hi NIO users, The next set of NIO releases will be the final set for which we publish CocoaPods. The final version of each package supporting CocoaPods will be: SwiftNIO 2.40.0 SwiftNIO HTTP/2 1.21.0 SwiftNIO SSL 2.19.0 SwiftNIO Transport Services 1.12.0…
❤26🤮11👍8💩3😢2🎉2
Вопрос #11 из State of iOS Toolchain 2022. Какие Proxy клиенты вы используете?
Anonymous Poll
51%
Charles
28%
Proxyman
5%
Другое
21%
Не использую
9%
Посмотреть результаты
👍1
Интересный кейс поэтапной проработки архитектуры SwiftUI приложения со сложным лэйаутом из нескольких таблиц, данные которых зависят друг от друга.
Medium
SwiftUI Case Study: Data modelling of Brotherhood Alchemist
SwiftUI is relatively new and many of us in the iOS development community are still adapting to this declarative language. There are many…
👍19
Два неожиданных факта про отзывы к приложениям:
1️⃣Их количество и оценки значимо влияют на поисковые позиции в сторе.
2️⃣При использовании системного API для предложения оценить приложение, показ алерта не гарантирован – iOS сама решает, показывать его или нет.
Твиттер-тред с деталями.
1️⃣Их количество и оценки значимо влияют на поисковые позиции в сторе.
2️⃣При использовании системного API для предложения оценить приложение, показ алерта не гарантирован – iOS сама решает, показывать его или нет.
Твиттер-тред с деталями.
Twitter
Ryan McLeod
On March 29th I released an update for @blackboxpuzzles. New ratings shot up massively overnight all thanks to a very small change. Having lots of ratings is a nice vanity metric but can also impact search rank, conversions, etc so… 🧵 A cautionary thread…
😱11👍2😁1
Мы в канале регулярно вспоминаем Realm, который недавно обрел вторую жизнь, став мультиплатформенным. Несмотря на то, что Core Data закрывает большинство потребностей по работе с данными, Realm прочно держит свою нишу, и иметь свое собственное представление о его работе – очень полезно. Чтобы разобраться в деталях, подключайтесь к воркшопу который проведет Антон Марунько, iOS Team Lead в Kupibilet, где расскажет, как с помощью Realm можно работать с данными в простом приложении и поотвечает на вопросы.
На вебинар стоит заглянуть и тем, кто только планирует вкатываться в iOS разработку. Помимо технической части, на нем поговорят и про актуальность профессии и перспективы в текущей обстановке новых ограничений от Apple.
На вебинар стоит заглянуть и тем, кто только планирует вкатываться в iOS разработку. Помимо технической части, на нем поговорят и про актуальность профессии и перспективы в текущей обстановке новых ограничений от Apple.
Otus
Курс разработчик iOS, базовый уровень
Научитесь разрабатывать приложения для мобильных устройств Apple без знаний программирования
💩50👍6
Вопрос #12 из State of iOS Toolchain 2022. Какие линтеры/форматтеры вы используете для Swift кода?
Anonymous Poll
3%
swift-format
13%
SwiftFormat
76%
SwiftLint
1%
Другое
15%
Не использую
8%
Посмотреть результаты
🤔2🤮2
Bazel – это альтернативная билд система, которая относительно распространена среди Android разработчиков, но засматривается и на iOS. Ее основные плюсы – инкрементальная сборка из коробки и отвязанность от xcodeproj файлов.
Держите туториал по тому, как затащить Bazel в существующий iOS проект, подключить инкрементальную сборку и кеширование скомпилированных модулей.
Держите туториал по тому, как затащить Bazel в существующий iOS проект, подключить инкрементальную сборку и кеширование скомпилированных модулей.
Medium
Building iOS apps faster using Bazel
Learn how to build iOS apps without Xcode and faster
💩31👍12❤5🤔4
Вопрос #13 из State of iOS Toolchain 2022. Как вы отлаживаете iOS приложения?
Anonymous Poll
68%
Принты
84%
Брейкпойнты
13%
os_log
48%
Команды lldb
60%
Xcode View Debugger
7%
Reveal
7%
Другие инструменты
8%
Посмотреть результаты
Практически любую проблему можно решить добавлением в проект еще одной зависимости. Этот подход очень распространен среди JS проектов, но и в iOS им любят злоупотреблять. Но зависимости не даются бесплатно, у них есть своя цена:
📌Сложности с управлением их версиями
📌Необходимость проверять и поддерживать их изменения при апдейте версии
📌Увеличение билд тайма
📌Необходимость закапываться в исходники библиотеки при появлении проблем
📌Влияние на архитектуру проекта
📌Общий рост размера кодовой базы
📌Потенциальные дыры в безопасности
📌Усложнение онбординга новых разработчиков
В статье неплохо раскладываются все эти проблемы. Подойдет, чтобы скинуть вашему коллеге, который в очередной раз затащил в Podfile что-то странное.
📌Сложности с управлением их версиями
📌Необходимость проверять и поддерживать их изменения при апдейте версии
📌Увеличение билд тайма
📌Необходимость закапываться в исходники библиотеки при появлении проблем
📌Влияние на архитектуру проекта
📌Общий рост размера кодовой базы
📌Потенциальные дыры в безопасности
📌Усложнение онбординга новых разработчиков
В статье неплохо раскладываются все эти проблемы. Подойдет, чтобы скинуть вашему коллеге, который в очередной раз затащил в Podfile что-то странное.
Jason Zurita
The Hidden Costs of Your Dependencies
👍20💩3
Вопрос #14 из State of iOS Toolchain 2022. С какими сетевыми протоколами чаще всего работают ваши приложения?
Anonymous Poll
93%
JSON
6%
XML
11%
Protobuf
3%
Другое
6%
Посмотреть результаты
🤯6👍5💩4
Как бы вы поступили, если бы вам надо было придумать способ сериализовать AttributedString? Скорее всего, реализовали бы какую-нибудь структуру, в которой ставили бы в соответствие рейнджу символов определенное свойство. И такой подход быстро сломался бы. Про то, почему так произошло бы, и как подходить к такой залаче правильно – в статье.
Ole Begemann
AttributedString’s Codable format and what it has to do with Unicode
Don’t store string indices or offsets if possible. They aren’t stable over time or across runtime environments.
👍7💩4