В нашем новом дайджесте изменения в App Store и иконки для visionOS, почему Google Play Protect посчитал 2ГИС вредоносным ПО, измерение производительности мобильных приложений в Booking, cамые скачиваемые и зарабатывающие приложения в России в 2023 году и многое другое.

И подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.



iOS

• Адаптируем иконку вашего приложения для visionOS
• Пример Microsoft Apple ничему не научил
• Вопросы с собеседований: Асинхронные задачи в Swift
• Netflix отказался от поддержки Vision Pro
• Apple разрешает ссылки на стороннюю оплату в американском App Store
• App Store разделят «на две части» — европейскую и нет
• Компании критикуют 27% налог Apple
• Мок-собеседование iOS-разработчика
•  Asynchronous SwiftUI buttons
•  Is MVVM Dead in SwiftUI?
•  Reading and Writing Spatial Video with AVFoundation
•  Exploring visionOS Accessibility: VoiceOver Gestures
•  Calling Swift from C++ code
•  Adapting your App Icon to visionOS
•  SwiftUI Binding Tips
•  iOS 17.2 Sideload Apps: What You Need to Know About Apple’s New Feature
•  Senior iOS Dev: A Roadmap to Becoming a 2x iOS Engineer
•  Concurrency-safe global variables to prevent data races
•  SwiftUI Button Styles And Shapes
•  SwiftUI Observable in iOS 17
•  Remove background from image in SwiftUI
•  Adventures in EDR, Part 1: Displaying EDR Photos in iOS 17
•  Visualising the build process of your iOS app with XCLogParser
•  Thoughts And Tips After My App Was nominated For A Golden Apple Award From AppleVis
•  Error handling in Swift
•  SwiftUI Grid Tutorial: Neat Rows & Custom Column Alignments
•  The Flexible Swift Error Handling
•  How to use ApiKit to model an API and fetch data from it
•  Force Update & show new App Version is Available
•  Scheme vs. Target in Xcode: Unraveling the Mystery
•  Floating Tab Bar for macOS
•  SwiftData Debugging The Easy Way
•  Staging and Committing with Xcode
•  ADAMANT Messenger for iOS: клиент блокчейн-мессенджера
•  FxSwipeAction: настраиваемые действия для свайпов в SwiftUI

Android

• Пост post-mortem: разбираемся, почему Google Play Protect посчитал 2ГИС вредоносным ПО
• Разбор кода Android-приложения фоторедактора Image Toolbox
• Как улучшить код функциональным подходом
• Отчаяние, отказы и академический отпуск: как я за год вернул уверенность и стал Android-разработчиком
• TDD: реальная история внедрения в проект
• Бесплатный курс «Введение в IDE рефакторинг кода в Kotlin»
• Android-разработка в 2023 году: год эволюции
•  How to add text similarity to your Android applications easily using MediaPipe and Kotlin
•  Creating and managing custom-scoped components in Dagger + Anvil
•  Camouflage the Status Bar with Edge-to-Edge Jetpack Compose Screens and Dialogs
•  Exploring Health Connect
•  Running UI tests in Jetpack Compose using Firebase Test Lab
•  Keep Your Kotlin Code Spotless: A Guide to ktlint and ktfmt Linters
•  Kotlin-Swift interopedia
•  Sealing the Deal: Mastering Sealed Classes in Android with Kotlin
•  The Magic of Kotlin Result Class
•  MVI Architecture Explained On Android
•  Compose and Conquer: A Tale of Effortless Android Navigation3
•  Kotlin: An Illustrated Guide — Sealed Types
•  Blurring the Lines: How to Achieve a Glassmorphic Design with Jetpack Compose
•  Never Use Exceptions for Logic in Kotlin!
•  How to resolve the memory leak issue using an Android Studio profiler
•  Koin-Dependent Composable Previews in Android Jetpack Compose
•  Level Up Your Daily Coding: Unveiling Four Lesser-Known Tools in Android Studio
•  App Performance Analysis with the Android Studio Profiler
•  The Top 3 State Management Mistakes On Android
•  How to Make a Clean Architecture App with Kotlin and Compose Multiplatform
•  Simple Calendar: простой календарь с событиями, задачами, настраиваемыми цветами и виджетами
•  RichEditor: WYSIWYG редактор для Compose

Кроссплатформа

• Интеграция видеоплеера YouTube во Flutter
• Почему Flutter?
• Как я повысил производительность flutter приложения с помощью FragmentShader. Часть 1 + Часть 2
• Podlodka: Qt — кроссплатформенная разработка приложений под декстоп и не только
•  Enhancing Flutter with High-Performance Image Processing Using FFI
•  How to Implement the AnimatedVisibility Widget in Flutter
•  Nitrite — A NoSQL embedded database for Flutter applications
•  Multiplatform UI library: ?Redwood
•  Scaling a Flutter team
•  Build a Custom Bottom Navigation Bar in Flutter with Animated Icons from Rive
•  Dart & Flutter DevTools Extensions
•  How To FIX Text Overflow In Flutter
•  Spotify-KMP: пример приложения на Kotlin Multiplatform

Разработка

• Измерение производительности мобильных приложений в продакшене
• «Спроси маму» в разработке: задавайте правильные вопросы, когда все вам лгут
• Офис Apple в Москве: как я с нуля стал экспертом и попал на приватную вечеринку для разработчиков
• Как снять логи при краше мобильного приложения?
• Как сравнивать цвета и сделать из этого казуальную игру?
• UX – как лучше улучшать
• Запускаем аналог LAMDATEST/BrowserStack для мобильных устройств и не только
• Что можно улучшить в приложении? часть 2. Крадем как художники у Lamoda
• Как мобильные разработчики занимаются инфраструктурой
• Плюс, работа с платежами и особенности разработки SDK
• Как умирают продукты без дизайн аналитики
• Сундар Пичаи предупредил сотрудников Google о грядущих увольнениях
• Действительно ли нам нужны менеджеры по продуктам?
• От стажера до ведущего разработчика — как расти в IT
• Dynamic Programming is not Black Magic
• Applying the SPACE Framework
• How Apple built iCloud to store billions of databases
• How to Build and Optimize a Content Feed in a UGC App in 2023
• Experimenting with Handwriting Recognition for The New York Times Crossword
• Measuring mobile apps performance in production
• why lowercase letters save data
• How Apple built iCloud to store billions of databases
• The Software Engineer’s Role as an API
• Designing better target sizes
•  How to Get a Developer Job – Even in This Economy [Full Course]
•  Figma Crash Course 2024
•  GPUPixel: кроссплатформенные эффекты красоты

Аналитика, маркетинг и монетизация

• Plants vs. Zombies 3 снова вышли в софт-лонч
• События в приложениях — как их создать и в каких случаях они пригодятся
• Самые скачиваемые и зарабатывающие приложения в России в 2023 году
• Google удалил Binance и другие криптобиржи из индийского магазина
• ROBODORO: трекер времени для iOS от red_mad_robot

AI, Устройства, IoT

• «Пора ли гнать на мороз Computer Vision — scientist'ов ?» (Fondation Models и вокруг)
• Кто побеждает в борьбе за технологии и что изменилось в AI с приходом опенсорса
• Samsung представил Galaxy S24 с ИИ от Google
• Locofy превращает макеты в код с помощью ИИ
• Apple впервые заняла первое место по поставкам смартфонов
• У меня зазвонил Репка-фон. Делаем телефон на базе Repka Pi 3 с применением модуля SIM868

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