В нашем дайджесте снова стейт-машины и исходники Telegram, собственный 3D движок и KMM, чтение кода, пространственная логика, ностальгия Waze и многое другое!

У нас есть Telegram-канал Mobile Insights, где подборки статей и новостей выходят каждый день, а так же AppFiles с библиотеками и самыми интересными статьями о мобильной разработке!
iOS
• Structured concurrency в Swift
• Стейт-машины в iOS
• Как отследить состояние сетевого соединения в Swift? Привет, нативная реализация, пока, Reachability
• Готовимся к iOS собеседованию
• 4 малоизвестные функции Swift
• Приложения в Mac App Store затрудняют выход без оформления подписки
• Эксперты из Оксфордского университета исследовали App Tracking Transparency
•
Туториал по Core Image: начало работы
•
Советы по повышению производительности SwiftUI
•
Улучшение реализации оповещений в iOS с использованием фабричного шаблона
•
NotSwiftUI стал лучше — как использовать его для создания UI компонентовComponents in iOS
•
UITabBar в стиле Dribbble с использованием Swift 5
•
Золотые правила `weak self`
•
Кастомная центральная кнопка для UITabBar в iOS на Swift 5
•
6 советов по улучшению программирования в Swift
•
Сокращаем время сборки вашего приложения для iOS
•
Потерянное руководство по анимации в SwiftUI
•
Создание доступного кастомного Tab Bar-а
•
Экспорт данных из Универсальной системы логгирования в Swift
•
Сокращение времени CI в iOS с помощью распараллеливания тестов
•
SwiftUI API/JSON c Async Await
•
7 главных особенностей Swift
•
Как мы тестируем SDK в RevenueCat
•
Как защитить iOS-приложение: руководство для разработчико
•
Scaling Header Scroll View: липкий заголовок на SwiftUI
•
PartialSheet: динамический Partial Sheet для SwiftUI
Android
• Пара интересных вещей в исходниках Telegram для Android
• Как я разрабатывал игру fly bird 2
• Google готовит Android Desktop System Images для запуска Google Play Games на Windows
• Google запрещает использование Accessibility API для записи звонков в Android
• Huawei Mobile Services и AppGallery: подробная инструкция для начинающих
•
Как использовать строковые ресурсы в ViewModel
•
MAD Skills — Архитектура
•
Jetpack Compose: тестирование анимаций
•
Flow под капотом: как это работает на самом деле
•
Реализация периодических уведомлений с помощью WorkManager
•
Apple Login с помощью Firebase в приложении для Android
•
Как отформатировать все возможные ошибки вызова API в Android с чистой архитектурой
•
Изолируйте Koin в модуле Android
•
Составьте свою Android-навигацию с кастомными аргументами
•
Встраивание Активити в Android
•
Twitter ставит все на Jetpack Compose для разработки функций: больше производительности, меньше ошибок
•
Как я использую новые Inline Value классы в Kotlin
•
Kotlin: иллюстрированное руководство — Коллекции: списки и наборы
•
Ktlint: линтер для Kotlin
•
PopupBarChart: график с подсказками
Разработка
• Как я создал собственный 3D движок и игру на нём за 20 месяцев + Как я создаю игры на своём 3D движке в одиночку
• Держи свой трафик в тайне. SSL Pinning — ещё раз о том же самом
• Как мы в QIWI внедряли Kotlin Multiplatform Mobile Часть 2: Смотрим шире
• Стелем мягкую соломку на жёсткий Flutter: как подготовиться к первому проекту, чтобы не провалить его
• Load as a Service: нагрузочное тестирование в inDriver
• Локализация игр глазами менеджера
• Ищите лучших разработчиков с помощью чтения кода
• Сохраняем код чистым в приложении на Flutter
• Путь исправления процесса, который работает, но бесит
• Flutter: Создание расширения для Chrome
• Flutter: Что нового в версии 2.10
• Как перевести 100 000 учеток на микросервис и ничего не сломать
• 21 распространённая ошибка в автоматизированном тестировании и способы борьбы с ними
• Flutter: Почему использует язык Dart
• $43 млн в Серии B: Statsig — платформа A/B-тестирования
• $8 млн: Coherence — облачная платформа для мультиплеера
• Дизайн приложений: примеры для вдохновения #75
• Podlodka #264: как вкатиться в стиль
• Дефицит разработчиков в России сокращается
• Как пространственная логика может сделать дизайн вашего продукта более интуитивным и профессиональным
• 7 фич, которые важно реализовать перед запуском мобильного приложения
• Как дизайнеру создать собственное мобильное приложение и заработать на нем
• Проектирование больших и сложных продуктов с нуля
•
Сказки Kotlin Multiplatform: общая ViewModel
•
Практическое руководство: как улучшить свои навыки решения проблем
•
Как получить больше Code Review от коллег
•
Пять коанов архитектуры программного обеспечения
•
9 психологических правил, которые я использовал, чтобы поддерживать интерес пользователей к моему дизайну
•
Как бесплатно продвигать свое мобильное приложение в 2022 году
•
Шаблоны проектирования MVC, MVP, MVI, MVVM и VIPER
•
Я только что стал зарабатывать $100 тысяч в год на спонсорах в GitHub (как я это сделал)
•
Elementary: новый подход к архитектуре Flutter-приложений
•
Анализ iMessage с помощью SQL
•
Как я заработал $100 тысяч на своей первой инди-игре
•
Уловки программирования, которые экономят мне часы рабочего времени
•
Миф о небольших постепенных улучшениях
•
Как вы будете определять приоритеты требований к продукту?
•
reFlutter: реверсинжиниринг Flutter-приложений
Аналитика, маркетинг и монетизация
• «Помощник учителя»: от идеи до популярного мобильного приложения
• Netflix теряет позиции в стриминге видео в США
• Отчет «Состояние Android-подписок 2022»
• Отчет 2022 Mobile Ad Creative Index от Liftoff и Vungle
• $5 млн: Tempr — автоматизация UA
• Wizards of the Coast покупает D&D Beyond
• Waze добавил Retro Mode с ностальгическим оформлением и музыкой
• Самые зарабатывающие приложения марта в США
AI, Устройства, IoT
• Лора на батарейках (мечта каждого мужчины)
• Модель-полиглот: как мы учили GPT-3 на 61 языке мира
• Безопасное хранение данных IoT в частном блокчейне Ethereum. Часть 3
• Лучшие ноутбуки для программирования 2022
•
Я Data Scientist-самоучка. Вот мои 3 предложения для новичков
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

У нас есть Telegram-канал Mobile Insights, где подборки статей и новостей выходят каждый день, а так же AppFiles с библиотеками и самыми интересными статьями о мобильной разработке!

• Structured concurrency в Swift
• Стейт-машины в iOS
• Как отследить состояние сетевого соединения в Swift? Привет, нативная реализация, пока, Reachability
• Готовимся к iOS собеседованию
• 4 малоизвестные функции Swift
• Приложения в Mac App Store затрудняют выход без оформления подписки
• Эксперты из Оксфордского университета исследовали App Tracking Transparency
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Пара интересных вещей в исходниках Telegram для Android
• Как я разрабатывал игру fly bird 2
• Google готовит Android Desktop System Images для запуска Google Play Games на Windows
• Google запрещает использование Accessibility API для записи звонков в Android
• Huawei Mobile Services и AppGallery: подробная инструкция для начинающих
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Как я создал собственный 3D движок и игру на нём за 20 месяцев + Как я создаю игры на своём 3D движке в одиночку
• Держи свой трафик в тайне. SSL Pinning — ещё раз о том же самом
• Как мы в QIWI внедряли Kotlin Multiplatform Mobile Часть 2: Смотрим шире
• Стелем мягкую соломку на жёсткий Flutter: как подготовиться к первому проекту, чтобы не провалить его
• Load as a Service: нагрузочное тестирование в inDriver
• Локализация игр глазами менеджера
• Ищите лучших разработчиков с помощью чтения кода
• Сохраняем код чистым в приложении на Flutter
• Путь исправления процесса, который работает, но бесит
• Flutter: Создание расширения для Chrome
• Flutter: Что нового в версии 2.10
• Как перевести 100 000 учеток на микросервис и ничего не сломать
• 21 распространённая ошибка в автоматизированном тестировании и способы борьбы с ними
• Flutter: Почему использует язык Dart
• $43 млн в Серии B: Statsig — платформа A/B-тестирования
• $8 млн: Coherence — облачная платформа для мультиплеера
• Дизайн приложений: примеры для вдохновения #75
• Podlodka #264: как вкатиться в стиль
• Дефицит разработчиков в России сокращается
• Как пространственная логика может сделать дизайн вашего продукта более интуитивным и профессиональным
• 7 фич, которые важно реализовать перед запуском мобильного приложения
• Как дизайнеру создать собственное мобильное приложение и заработать на нем
• Проектирование больших и сложных продуктов с нуля
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• «Помощник учителя»: от идеи до популярного мобильного приложения
• Netflix теряет позиции в стриминге видео в США
• Отчет «Состояние Android-подписок 2022»
• Отчет 2022 Mobile Ad Creative Index от Liftoff и Vungle
• $5 млн: Tempr — автоматизация UA
• Wizards of the Coast покупает D&D Beyond
• Waze добавил Retro Mode с ностальгическим оформлением и музыкой
• Самые зарабатывающие приложения марта в США

• Лора на батарейках (мечта каждого мужчины)
• Модель-полиглот: как мы учили GPT-3 на 61 языке мира
• Безопасное хранение данных IoT в частном блокчейне Ethereum. Часть 3
• Лучшие ноутбуки для программирования 2022
•

← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.