iOS
• Concurrency Recipes: проблемы Swift Concurrency
• Apple разрешает распространение приложений с сайтов
• Rendering System Images in SwiftUI
• Test-Driven Development (TDD) for bug fixes in Swift
• Exploring SwiftUI: Creating a Scope View using DragGesture
• Global actors in Swift
#ios
А вот и статья:
Правила линтинга выступают в качестве письменных соглашений об архитектуре кодовой базы и установленных лучших и необходимых практиках команды. Они помогают поддерживать последовательность кодовой базы, устраняя двусмысленности, защищают наши проекты от мелких ошибок и значительно ускоряют написание и рецензирование кода.
Благодаря Konsist мы на Android наконец-то получили долгожданный инструмент, который делает написание правил линтинга простым и доступным, не требующим сложного обучения. Инструмент, который, безусловно, является важной вехой в написании пользовательских правил, благодаря своей гениальной идее переосмыслить их как юнит-тесты.
Эта музыка будет вечной. Apple снова разблокировала учетную запись Epic Games. Пишут, что на этом настояли европейский регулятор - Apple отступилась, fEpic обещал не нарушать правила. Так что игровой магазин на iOS, похоже, все таки в скором времени будет. Вместе с Fortnite.
Разработка
• Я.Субботник по мобильной разработке
• Avito Analytics meetup
• The most important goal in designing software is understandability
• You’re not a weak developer if you don’t always show off your technical excellence
• Context-switching - one of the worst productivity killers in the engineering industry
Маркетинг
• Маркетологи в мобайле (Spring Edition): Арина Еремян (Пятёрочка.Доставка)
• You can put your app's paywall in an Alert. But you probably shouldn’t
Кроссплатформа
• Адаптивная вёрстка во Flutter
• Сериализация и десериализация — вошли и вышли
• Приложение викторины: внедрение Cardoteka и основные паттерны проектирования с Riverpod
• Методы-расширения в Dart
• flavius.holerga/making-a-3d-looking-game-using-flutter-tutorial-35ac6bf9e26d">Making a 2.5D game using Flutter — Tutorial
iOS
• Вышла VisionOS 1.1
• Loopover: пазл в стиле кубика Рубика
• Optional в Swift: 5 вещей, которые вы должны знать
• Уроки Swift: UITextField с анимированным плейсхолдером
• Minimal Widget Product: путь к эффективной и гибкой реализации виджетов
• Поваренная книга SwiftUI: лучшие практики управления состояниями в SwiftUI
• Apple снова разблокировала учетную запись Epic Games
• How to build a draggable bottom sheet with a scroll view in SwiftUI
• Everything you need to know about Swift 5.10
• Concurrency Recipes
• How to Dynamically Construct Complex Predicates for SwiftData
• Aspect-Oriented Programming in Swift
• Implementing a TV Guide with SwiftUI
#ios
Новый Fused Orientation Provider обеспечивает получение точных данных об ориентации устройства
Ориентация или положение устройства используется в качестве входного сигнала во многих случаях: виртуальная или дополненная реальность, распознавание жестов, компас и навигация — в любом случае, когда приложению нужна ориентация устройства относительно окружающей среды. Fused Orientation Provider (FOP) — это новый API в сервисах Google Play, который обеспечивает качественную и стабильную ориентацию устройства путем объединения сигналов от акселерометра, гироскопа и магнитометра.
1. Хотя в настоящее время Rotation Vector в Android уже обеспечивает получение данных об ориентации устройства (и будет продолжать это делать), новый FOP обеспечивает более последовательное поведение и высокую производительность на всех устройствах.
2. FOP обеспечивает единую реализацию на всех устройствах - API реализован в Google Play Services, а значит нет различий в реализации на устройствах разных производителей. Обновления алгоритма могут быть выпущены быстро и независимо от обновлений платформы Android.
3. FOP учитывает местное магнитное склонение, если оно доступно и компенсирует более низкое качество датчиков и OEM-реализаций (например, смещение гироскопа, синхронизацию датчиков).
Fused Orientation Provider доступен на всех устройствах с сервисами Google Play на Android 5 (Lollipop) и выше.
Видео и подкасты за неделю:
• (iOS Ru)
Minimal Widget Product: путь к эффективной и гибкой реализации виджетов
• (iOS Ru)
Уроки Swift: UITextField с анимированным плейсхолдером
• (iOS En)
Paging ScrollView in SwiftUI for iOS 17
• (iOS En)
Visual Effect API - Stacked Cards - ScrollView
• (iOS En)
Custom Calendar Tallies in SwiftUI
• (iOS En)
Minimal Login Setup With Firebase Email Authentication
• (And Ru)
Разработка новостного приложения. Часть 3
• (And Ru)
Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков
• (And En)
THIS Is How You Create Custom Shapes in Jetpack Compose
• (And En)
New Android 15 Changes, App Update Prompts & AI Document Scanning
• (And En)
Lyricist & Voyager - Navigating the Compose Multiverse
• (And En)
Imperative, declarative, object oriented, functional: four of a Kotlin kind
• (Crs Ru)
Сериализация и десериализация — вошли и вышли
• (Crs Ru)
Адаптивная вёрстка во Flutter
• (Dev Ru)
Я.Субботник по мобильной разработке
• (Dev En)
Firebase’s Release Monitoring dashboard, Dart 3.3 release, and more dev news!
• (Dev En)
Learn C# – Full Course with Mini-Projects
• (Anl Ru)
Avito Analytics meetup
Что вы интересного посмотрели/послушали про разработку на этой неделе? 🌐 @AppFiles
Сериал Тупой и еще тупее Apple против Epiс продолжается. Apple назвала Epic "незаслуживающей доверия" и снова заблокировала (так и хочется добавить на хер) аккаунт разработчика. Продержался он менее месяца (с 16 февраля) и, как пишут, уже 23 февраля Фил Шиллер связался с Суини, чтобы попросить "письменную гарантию" того, что Epic Games "выполнит свои обязательства". "В простых, безоговорочных выражениях, пожалуйста, объясните нам, почему мы должны доверять Epic на этот раз", - говорится в конце письма Шиллера. Суини ответил в тот же день и заверил Фила, что все будет нормально. Правда, уже 2 марта, юристы Apple отправили Epic письмо, в котором сообщается о прекращении действия аккаунта, глава Epix их не убедил. Короче, это бодяга с нами еще лет на 10.
Разработка
• Быть хорошим инженером-программистом сейчас сложнее, чем когда-либо
• flutterwtf/mobile-app-security-best-practices-in-2024-fa1d124bf571">Mobile App Security Best Practices in 2024
• Sliders degrade UX (so do this instead)
• Feature flags are ruining your codebase
Маркетинг
• Apple снова заблокировала учетную запись Epic Games
• В AppMetrica появился инструмент прогнозирования LTV и оттока
• Маркетологи в мобайле (Spring Edition): Ася Загирова (Premier)
• Apple расширяет аналитику в App Store Connect
Кроссплатформа
• Основы управления состояниями во Flutter
• Integrating Stripe Payment Gateway into Your Flutter App
iOS
• Альтернативные магазины приложений на iOS перестанут работать за пределами Европы
• Making Ollie: Creating a local iOS app in a time of React Native
• Embedded Swift on the Raspberry Pi Pico
• How to create an iOS chat app
• SwiftUI loading states with a twist; Solving a mutation puzzle
• Nerdy internals of an Apple text editor
• Optionals in Swift explained: 5 things you should know
• High Performance Swift Apps
#ios
Apple расширяет аналитику в App Store Connect
Теперь через App Store Connect API доступно более 50 новых отчетов, которые помогут вам проанализировать работу приложений в App Store и на iOS.
Отчеты разбиты на следующие категории:
• App Store Engagement — количество пользователей в App Store, которые взаимодействуют с приложением разработчика или делятся им с другими.
• App Store Commerce — загрузки, продажи, предварительные заказы и транзакции, совершенные с помощью безопасной системы App Store In-App Purchase
• App Usage — количество активных устройств, установок, удалений приложений и т. д.
• Frameworks Usage — взаимодействие приложения с возможностями ОС, такими как PhotoPicker и Widgets.
• Performance — производительность ваших приложений и взаимодействие пользователей с определенными функциями.
• Кроме того, в консоли CloudKit появились новые отчеты, содержащие данные об Apple Push Notifications и File Provider.
Android
• Начинаем тестирование со Сканером Доступности
• Choosing Between Sealed Class and Sealed Interface in Kotlin for Android Development
• Android CI: Build Caching on Github Actions
• Tracing recompositions without boilerplate code
• anupamsingh696/top-100-android-interview-questions-eca251f3bf3f">Top 100 Android Interview Questions
• mobile_44538/privacy-secure-android-keyboards-b11b322ffa41">Privacy Secure Android Keyboards
#android
Есть ли деньги в мобильных приложениях в 2024 году?
Как делать воронку, которая конвертит и окупается? Где взять толковых продактов и маркетологов? Как делать темные паттерны, которые конвертят?
Об этом в своем канале пишет Миша Табунов. Миша – работал 6 лет директором по продукту в FunCorp, занимался мобильными приложениями (более 100 млн установок в США). До этого запускал свои B2C развлекательные продукты, которые собирали десятки миллионов пользователей, а с одним из них проходил Y Combinator.
Самые интересные посты:
• Почему нужны темные паттерны
• Как мы без денег получили первый миллион пользователей
• Правда про дизайн
• Главная проблема касдевов
Подписывайтесь на Мишу, получайте правду про продукт и маркетинг.
@bossofyourbossРеклама ИП Табунов Михаил Валерьевич. Erid 2Vtzqvdvjh5
Apple только что показала новые 13" и 15" MacBook Air на базе процессора M3. Говорят, что работают на 60% быстрее, чем модели на M1, и до 13 раз быстрее, чем самый быстрый MacBook Air на Intel. Стоимость MacBook Air 13 с M3 составляет от $1099, MacBook Air 15 с M3 уже доступен по предзаказу от $1299.
Разработка
• Как мы пытались растить выручку через персонализацию
• Топ 5 книг для синьора
• Исследователи обнаружили в Hugging Face вредоносные модели ИИ
• How to build a documentation website for your project
• Case Study: Improving a Banking App with a UX Audit
• juraj.malenica/unpopular-opinion-its-harder-than-ever-to-be-a-good-software-engineer-8560585b0ea8">Unpopular Opinion: It’s harder than ever to be a good software engineer
Маркетинг
• Самые скачиваемые и зарабатывающие приложения в России в феврале 2024
• Маркетологи в мобайле (Spring Edition): Василина Кузенко (ИЛЬ ДЕ БОТЭ)
• Самые скачиваемые приложения в мире в январе 2024
• Маркетологи в мобайле (Spring Edition): Ярослава Адаменко (М.Видео и Эльдорадо)
Кроссплатформа
• Migrating to Koin Annotations in a multiplatform project
iOS
• Continuations для взаимодействия асинхронных задач с синхронным кодом
• Apple вернет PWA в iOS
• Apple опубликовала план развертывания подписей для SDK
• Пишем текстовую RPG
• VerticalSplit: контейнер SwiftUI с двумя View с настраиваемым разделением
• Setapp от MacPaw станет первой альтернативной платформой для iOS в Европе
• An Introduction to Isolation in Swift
• Migrating my SwiftUI App to VisionOS in 2 Hours
• jonathan.crooke/scaling-ios-at-bumble-6f0602682903">Scaling iOS at Bumble: Part 3/3 — Results and Developer Quality of Life
• Swift Predicate: Usage, Composition, and Considerations
#ios
Исследователи обнаружили в Hugging Face вредоносные ИИ-модели
На платформе Hugging Face было обнаружено не менее 100 вредоносных ИИ-моделей.
1. Команда безопасности JFrog обнаружила, что около сотни моделей, размещенных на платформе, содержат вредоносный функционал.
2. Например, одна из моделей PyTorch содержала код, который позволял установить обратный shell к компьютеру жертвы. Вредоносный код использовал метод из модуля pickle в Python для выполнения произвольного кода при загрузке файла модели, избегая обнаружения за счет встраивания в доверенный процесс сериализации.
3. В использовании вредоносные модели замечены пока не были и вообще предполагается, что это были исследователи.
4. Однако это происходит, несмотря на меры безопасности Hugging Face, включая сканирование на наличие вредоносного кода и секретов, а также тщательное изучение функционала моделей на предмет обнаружения такого поведения.
И что: все, что может быть поражено - будет поражено. Поэтому в следующий раз при использовании новой модели подумайте, а нет ли в ней бекдора.
Видео и подкасты за неделю:
• (iOS Ru)
Пишем текстовую RPG
• (iOS En)
How to Create 3D App Icons for visionOS
• (iOS En)
How to easily mock ANY network call with URLProtocol
• (iOS En)
Elastic Custom Segmented Control - SwiftUI
• (iOS En)
Custom SwiftUI Calendar
• (And Ru)
Наш опыт внедрения Compose в большой проект
• (And Ru)
Многомодульность: что это такое?
• (And Ru)
Жизнь инди в Google Play
• (And Ru)
Разработка новостного приложения. Часть 2
• (And En)
The Ultimate Package Structure Guide for Android Developers
•(And En)
Modern Dependency Management With Version Catalogs
• (And En)
Modularization at scale with Alireza Tizfahmfard
• (Dev Ru)
Топ 5 книг для синьора
• (Dev En)
Machine Learning in 2024 – Beginner's Course
• (Dev Ru)
Как мы пытались растить выручку через персонализацию
Что вы интересного посмотрели/послушали про разработку на этой неделе? 🌐 @AppFiles
Apple разрешает распространение приложений с сайтов
Теперь благонадежные разработчики смогут распространять приложения с сайта.
1. Необходимо 2 года "хорошего поведения" в App Store (то есть Fortnite сразу нет 😀).
2. Необходим 1 миллион установок за предыдущий год.
3. Каждая установка за следующий год свыше 1 миллиона будет стоить €0.50 (Core Technology Fee).
4. Apple предоставит авторизованным разработчикам доступ к API, которые облегчат распространение их приложений через Интернет, интеграцию с системными функциями, резервное копирование и восстановление приложений пользователей и многое другое.
Лучшее из вчерашнего в #Android - Прекратите спорить в Code Review. Начните обеспечивать выполнение с правилами Lint (сcылка)
Инженеры не предназначены для запоминания информации. Но мы точно можем создать инструменты, которые будут делать это за нас. Всякий раз, когда мы согласовываем стиль кода, архитектуру нашего проекта или вообще любые лучшие практики, которым мы должны следовать, чтобы обеспечить здоровую и поддерживаемую кодовую базу, нам нужно будет создать автоматизацию, которая будет их выполнять. Это и есть правила Lint.Поставьте 10х👍, если хотите русский перевод.
Android
• Google вводит новые сборы с разработчиков в рамках соблюдения DMA
• Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков
• Разработка новостного приложения. Часть 3
• Legado: читалка для Android
• Новый Fused Orientation Provider обеспечивает получение точных данных об ориентации устройства
• Imperative, declarative, object oriented, functional: four of a Kotlin kind
• Stop Debating in Code Reviews. Start Enforcing with Lint Rules
• How to create Glovo-like main screen animation using Jetpack Compose
• michalankiersztajn/kotlin-design-patterns-abstract-factory-explained-79c6594d7a70">Kotlin Design Patterns: Abstract Factory Explained
• Designing your account deletion experience with users in mind
• Downloadable and Preloaded Fonts on Android
#android
DetailsPro - это no-code инструмент проектирования на основе SwiftUI.
• Создавайте с помощью таких представлений SwiftUI, как VStack, Text, Image и др.
• Создавайте реальные дизайны без написания кода
• Экспорт в Xcode, Swift Playgrounds и др.
Сайт: https://detailspro.app/
Платформа: iOS
По граблям шрифтов
Подборка всех материалов за прошлую неделю - изоляция в iOS, адаптация UI/UX для людей с проблемами зрения, сложно ли сейчас быть Богом программистом, весенние выпуски маркетологов в мобайле, сериализация и десериализация и многое другое. Заходите!
Google вводит новые сборы с разработчиков
Сегодня компания Google представила более подробную информацию о сборах, которыми будет сопровождаться ее план по соблюдению нового европейского закона о цифровых рынках.
1. Для тех, кто будет предлагать в Европе внешние покупки, запускается программа «Внешние предложения» (External offers program).
2. Фактически это дублирование Core Technology Fee от Apple - просто плата за платформу Android. "Плата за услуги Google Play никогда не была просто платой за обработку платежей - она отражает ценность Android и Play и поддерживает наши инвестиции в Android и магазин приложений, позволяя реализовать функции для пользователей и разработчиков, на которые рассчитывают люди".
3. Будет две комиссии - плата за первоначальное приобретение, которая составляет 10% для покупок в приложениях или 5% для подписки и плата за постоянные услуги, которая составляет 17% для покупок в приложении или 7% для подписки.
4. То есть в реальности суммарные платежи вне Google Play будут на 3 пп меньше, чем в нем - например, 12 против 15 для подписки.
5. Разработчик может отказаться от постоянных услуг и соответствующих сборов через два года. Но нужно будет согласие пользователей.
Android
• Apollo Kotlin: сильно типизированный, кэширующий GraphQL-клиент
• Microsoft прекращает работу Windows Subsystem for Android
• Новый Text-To-Speech движок в Wear OS
• Как увеличить шрифт так, чтобы контейнер не поехал? Адаптация UI/UX для людей с проблемами зрения в XML и Compose
• How to own a legacy Android codebase in 2024?
• Kotlin Variance... without Generics!
• Prominent Disclosure and Consent Requirement
• Jetpack Compose Tips and Conventions for the @Composables to Make Them Better
• mohit2656422/top-10-work-manager-questions-2024-3631683bf290">Top 10 Work Manager Questions 2024
• oguzhanaslann/android-project-cleanup-for-smaller-apks-faster-builds-and-a-better-development-experience-830bfcb0032b">Android Project Cleanup for Smaller APKs, Faster Builds, and a Better Development Experience
#android
Microsoft прекращает работу Windows Subsystem for Android
Microsoft прекращает поддержку подсистемы Android в Windows 11 в следующем году.
1. Софтверный гигант впервые объявил о работе Android-приложений в Windows 11 с помощью Amazon Appstore почти три года назад, но теперь эта Windows Subsystem for Android перестанет поддерживаться, начиная с 5 марта 2025 года.
2. Сегодня пользователи Windows 11 уже не могут искать приложения Amazon Appstore или связанные с ними приложения для Android в Microsoft Store.
3. Разработчики больше не смогут представлять новые приложения для Windows 11 после 5 марта 2024 года, но разработчики существующих приложений смогут продолжать выпускать обновления приложений до тех пор, пока работа Amazon Appstore на Windows 11 не будет полностью прекращена.
И что: странный шаг учитывая то, как все прекрасно могло бы быть. Впрочем, полтора года назад сам Google запустил бета-версию Google Play Games — платформу, которая позволяет любому желающему играть в игры для Android на ПК с Windows. Так что надежда на нормальную кроссплатформенную работу все же есть.
ЕС по антимонопольному иску Spotify оштрафовала Apple на 1.84 миллиарда евро. И тут даже как-то сочувствие к Apple проснулось. Как пишет Apple, Spotify добился ведущего положения на музыкальном рынке вообще и на iOS в частности во многом как раз с помощью Apple, и при этом ничего ей не платит. "Команда App Review рассмотрела и одобрила 421 версию приложения Spotify - обычно в течение одного дня - и часто ускоряет рассмотрение по просьбе Spotify. Для того чтобы создать инструменты, технологии и рынок, которыми Spotify пользуется каждый день, компании Apple требуются постоянные усилия и большие инвестиции. Мы даже летали с нашими инженерами в Стокгольм, чтобы лично помочь командам Spotify. В результате, когда пользователь открывает приложение Spotify, слушает музыку в дороге или просит Siri воспроизвести песню из его библиотеки, все просто работает. И опять же - Spotify ничего не платит Apple". В общем, рекомендую прочитать не только новость, но и ответ Apple - нестандартно эмоциональный и интересный.
Разработка
• ЕС оштрафовала Apple на 1.8 млрд евро по антимонопольному иску Spotify
• Как я перестал бояться и полюбил автоматизацию мобильных приложений — Robot Framework
• Increase Test Fidelity By Avoiding Mocks
• Why Bad Design is Good
Маркетинг
• Маркетологи в мобайле (Spring Edition): Мария Миткевич (Мегамаркет)
• Что ученые знают про темные паттерны в дизайне: как повышают конверсию и насколько роняют доверие?
Кроссплатформа
• Навигация по страницам во Flutter
• Flutter: Modularized Dependency Injection
iOS
• Вопросы с собеседований: Что такое Hashable в Swift
• Введение в Изоляцию в Swift
• MLX Swift Chat: локальные LLM с MLX и SwiftUI
• Оптимальный архитектурный шаблон iOS
• How to use TipKit to create tool tips in SwiftUI
• Guide to the App Store Connect API: Calculate your iOS app's average user rating for each version
• iOSHarsh/mastering-test-driven-development-tdd-in-ios-63e0584a10ae">Mastering Test-Driven Development (TDD) in iOS
• Simplifying Test Writing with Protocol Witnesses in Swift
• Bad practice: loading a large image on the main thread
• High Performance Swift Apps
#ios
Лучшее из вчерашнего в #ios - завершение цикла "Масштабирование iOS в Bumble"
Серия из трех статей о работе, проделанной в течение 2022 и 2023 годов и направленной на решение проблем масштабирования производственных приложений для iOS в одной из крупнейших дейтинг-компаний. TLDR: Tuist.
У меня был перевод первой, а вот вторая и jonathan.crooke/scaling-ios-at-bumble-6f0602682903">третья. Поставьте 👍, если тоже хотите их на русском.
Android
• ComposeInvestigator: отслеживание рекомпозиций
• Разработка новостного приложения. Часть 2
• Наш опыт внедрения Compose в большой проект
• Многомодульность: что это такое?
• Жизнь инди в Google Play
• Android Studio Iguana стала стабильной
• State of Compose 2023
• Create Gemini loading animation using Jetpack compose
• Rich media input from the keyboard in Compose
#android
Apple вернет PWA в iOS
Apple «продолжит предлагать существующие возможности веб-приложений для главного экрана в ЕС».
1. Ранее Apple объяснила, что ей придется создать «совершенно новую интеграционную архитектуру, которой сейчас нет в iOS», чтобы решить «сложные проблемы безопасности и конфиденциальности, связанные с PWA-приложениями, использующими альтернативные браузерные движки».
2. Сегодняшним заявлением Apple изменила свой курс и сообщила, что веб-приложения продолжат существовать в Европейском союзе в том виде, в котором они существовали до версии iOS 17.4.
3. Просто работать всегда они будут на WebKit, независимо от того, добавлено ли веб-приложение с помощью Safari или нет — точно так же, как это работает сегодня и уже много лет.
И что: не могу не вспомнить анекдот в тему
Сидит молодая семья на пляже. Вдруг на песок выпрыгивает золотая рыбка и говорит:
- Я исполню три ваших желания по одному на каждого.
Сын сразу говорит:
- Хочу хомячка!
Отец:
- В жопу хомячка!
Мать:
- Из жопы хомячка!
Гибридная игуана
Подборка всех материалов за прошлую неделю - возврат от SwiftUI к UIKit и машинное обучение на устройствах, стабильная Iguana и гибридный интерфейс в Wear OS, деплой Flutter-приложений, сложный повтор в мобильном календаре, весенние маркетологи в мобайле и многое другое. Подключайтесь!
Android Studio Iguana стала стабильной
Сегодня Google выпустил Android Studio Iguana в канале стабильных релизов. Среди новых функций:
• Интеграция системы контроля версий в App Quality Insights
• Просмотр вариантов сбоев Crashlytics в App Quality Insights
• Проверка доступности и адаптивности дизайна Jetpack Compose
• Прогрессивный рендеринг для предварительного просмотра Compose
• Обновленная платформа Intellij
• Шаблоны для Baseline Profiles
• Проверка изменений конфигурации с Espresso Device API
• Pixel 8 и Pixel 8 Pro в Android Emulator (34.2)
• Поддержка Gradle Version Catalogs
• Интеграция Google Play SDK Index
• Предупреждение о неподдерживаемой compileSdk