В этом дайджесте сторонние загрузки в iOS и ускорение дебага на Android, схемы кампусов и неочевидные палки в колеса, свои “Герои”, артефакты пришельцев в вашем коде, руководство для начинающих по автономным агентам и многое другое.
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/r/w780q1/webt/ld/h6/lc/ldh6lcz7p1yuccgustyjllqdfrk.jpeg)
iOS
• Как хранить данные в iOS: UserDefaults, Keychain и сэндвичи
• Coffee&Code #4: Анастасия Улитина (Amazon Prime Video)
• SKAdNetwork 4.0 для приложений с подписками
• Пользователи iOS смогут менять оплату подписки прямо из приложений
• Apple готовит множество приложений для AR/VR-гарнитуры
• iOS 17, как сообщается, создаст условия для сторонней загрузки приложений
•
An Autopsy of SKEmitterNode (With a Conversion to SwiftUI)
•
The “some” keyword in Swift
•
Understanding the Role of Expressions in Swift Programming
•
Understanding unstructured and detached tasks in Swift
•
Apple’s Hello animation
•
Don’t Destroy Swift’s Performance with These mistakes
•
Implement Your First Swift Package Build Plugin
•
Cryptography in iOS Applications: Techniques and Code Examples
•
Deeplink URL handling in SwiftUI
•
Preparing My App for Swift 6
•
Handling Network calls in Swift with Moya
•
How the relative size modifier interacts with stack views
•
Presenting Expandable Text Fields In SwiftUI
•
Recreate Adobe AfterEffects With SFX Using SwiftUI
•
ImageRenderer in SwiftUI
•
2,000 Imports: Organizing My Apps’ SwiftPM Modules
•
How Senior iOS Engineers Style Code: Performance And Clarity
•
How I would solve the Facebook iOS App Design Interview
•
HealthGPT: запросы на естественном языке к Apple Health
•
Mockingbird: фреймворк мокирования для Swift и Objective-C
Android
• Ускоряем дебаг в разы. Зачем и как использовать брейкпоинты
• Собеседование Middle Android разработчика
• Схема кампуса в Android приложении
• Запускаем Android Emulator на процессорах AMD под управлением Windows 10/11 Home
• Пишем Android-приложение с ChatGPT
• Ultron — самый простой фреймворк для разработки UI тестов Android
• CustomView Android. Кольцевая диаграмма для отображения статистики
• Написали UI для чата поддержки с помощью Jetpack Compose: как это было
• Берём Glance Widgets под контроль
• Что нового в Android и куда нас приведут нейронки
• Google Play будет автоматически предлагать обновить сбоящие приложения
• Android 13 вдвое увеличил распространение с января
•
Главный доклад KotlinConf 2023
•
Random Musings on the Android 14 Developer Beta 1
•
Drawing edge to edge in Jetpack Compose
•
Synking all the things with CRDTs: Local first development
•
Bump version code for Android apps using GitHub Actions
•
Hey Google, It’s Your Bug!
•
Create your own Gradle Tasks and Plugins in less than 10 minutes
•
3 Common Ways To Retry Network Requests Automatically in Android
•
10 Useful Kotlin Extension Functions for Simplifying Your Code
•
Sharesheet custom actions — Android14
•
Android modularization from MVP to Enterprise
•
Improvements and Changes to Compose’s Pointer Input
•
An Android Studio Template Project for Your Android Apps
•
Improvements and Changes to Compose’s Pointer Input
•
Level Up your Bottom Navigation with Lottie Animations
•
Bazel: The Revolutionary Build System for Android App Development
•
Supercharge your (Android) terminal experience
•
State Flow and Shared Flow in Kotlin
•
The Shape of Things to Come
•
Ultron: простое UI-тестирование для Android
•
Redukks: Redux/Uniflow для Kotlin Multiplatform
Кроссплатформа
• Почему так удобно использовать паттерн MVI в KMM
• Как мы стриминг пилили, или 5 неочевидных палок в колеса от Flutter
• Почему вам стоит использовать Unity Simulator при разработке под мобильные платформы
• Создаем клон Instagram при помощи Flutter и Feeds. Часть 2
•
Google’s Recommended Flutter App State Management
•
React Native’s New Architecture: A New Era of Performance
•
Records & Patterns — Dart | Flutter ?
•
Redukks: Redux/Uniflow для Kotlin Multiplatform
•
Can React Native Close the Performance Gap? A Dive into C++ Turbo Native Modules
•
How to Use Mixin to Create Reusable Multi Selection Logic
•
Understanding KMM: Beginners guide
•
Visual Studio Code Extensions to Improve Your Flutter App Development
Разработка
• О, «Герои»? Дайте две! Как я писал очередной браузерный клон легендарной стратегии, в который уже почти* можно играть
• Как Slack отправляет миллионы сообщений в режиме реального времени
• GraphQL: от восторга до разочарования
• Требования к графическим интерфейсам: одна памятка ответит на все ваши вопросы
• Intern Meetup Week. Mobile
• $45 млн в Серии А: Ditto — база данных для мобильных, веб, IoT и серверных приложений
• $53 млн в Серии D: Odeko — платформа для кофеен
• Секрет идеально сбалансированных пустых пространств
• Артефакты пришельцев
• Apache EventMesh стал проектом верхнего уровня
•
When Can I Call Myself a Senior Developer?
•
Mastering the Amazon Interview: A Comprehensive Guide to Amazon’s 16 Leadership Principles
•
Protecting Your API from App Impersonation: Token Hijacking Guide and Mitigation of JWT Theft
•
Onboarding: 10 Tips for Designing the Great UX
•
I asked this system design question to 3 guys during a developer interview and none of them gave the answer
•
Software Architecture Is For Suckers
•
Firebase Firestore — List of Essential Security Rules
•
Cheetah: ИИ-помощник в прохождении интервью
Аналитика, маркетинг и монетизация
• Sega покупает Rovio
• В RuStore появилась авторизация через Tinkoff ID и мгновенная оплата с Tinkoff Pay
• Google предложит альтернативные системы оплаты в Великобритании
• Marvel Move — фитнес с супергероями
• BeReal продолжает расти
• Самые скачиваемые приложения в марте 2023
AI, Устройства, IoT
• Полное руководство для начинающих по автономным агентам
• ChatGPT — лучший помощник программиста. Примеры реальных задач. Плагины и инструменты
• Осваивают ли LLM модели мира, или лишь поверхностную статистику?
• Как мы перепридумали сценарии умного дома для Zigbee-устройств
• Ещё один Хаброметр
• Kandinsky создаёт игры
• Кормушка для собак с интеграцией Bitcoin и Lightning Network
• Потоковый проект в режиме реального времени с использованием данных смартфона
• Новые устройства Яндекса для умного дома
•
List of Open Sourced Fine-Tuned Large Language Models (LLM)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/webt/ld/h6/lc/ldh6lcz7p1yuccgustyjllqdfrk.jpeg)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Как хранить данные в iOS: UserDefaults, Keychain и сэндвичи
• Coffee&Code #4: Анастасия Улитина (Amazon Prime Video)
• SKAdNetwork 4.0 для приложений с подписками
• Пользователи iOS смогут менять оплату подписки прямо из приложений
• Apple готовит множество приложений для AR/VR-гарнитуры
• iOS 17, как сообщается, создаст условия для сторонней загрузки приложений
Марк Гурман из Блумберг докладывает, что в iOS 17, которую скоро презентуют на WWDC, сделают решение для сторонней загрузки приложений. Как и когда это начнет работать неизвестно (а может и вообще не начнет), но в Европе в 2024 вступает в силу Закон о цифровых рынках, так что, видимо, это крайний срок для реализации задуманного.• Цикломатическая сложность в Swift
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Ускоряем дебаг в разы. Зачем и как использовать брейкпоинты
• Собеседование Middle Android разработчика
• Схема кампуса в Android приложении
• Запускаем Android Emulator на процессорах AMD под управлением Windows 10/11 Home
• Пишем Android-приложение с ChatGPT
• Ultron — самый простой фреймворк для разработки UI тестов Android
• CustomView Android. Кольцевая диаграмма для отображения статистики
• Написали UI для чата поддержки с помощью Jetpack Compose: как это было
• Берём Glance Widgets под контроль
• Что нового в Android и куда нас приведут нейронки
• Google Play будет автоматически предлагать обновить сбоящие приложения
• Android 13 вдвое увеличил распространение с января
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Почему так удобно использовать паттерн MVI в KMM
• Как мы стриминг пилили, или 5 неочевидных палок в колеса от Flutter
• Почему вам стоит использовать Unity Simulator при разработке под мобильные платформы
• Создаем клон Instagram при помощи Flutter и Feeds. Часть 2
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• О, «Герои»? Дайте две! Как я писал очередной браузерный клон легендарной стратегии, в который уже почти* можно играть
• Как Slack отправляет миллионы сообщений в режиме реального времени
• GraphQL: от восторга до разочарования
• Требования к графическим интерфейсам: одна памятка ответит на все ваши вопросы
• Intern Meetup Week. Mobile
• $45 млн в Серии А: Ditto — база данных для мобильных, веб, IoT и серверных приложений
• $53 млн в Серии D: Odeko — платформа для кофеен
• Секрет идеально сбалансированных пустых пространств
• Артефакты пришельцев
• Apache EventMesh стал проектом верхнего уровня
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Sega покупает Rovio
Про покупку Rovio не могу не процитировать Александра Горного: «Есть популярная история с бизнес-тренингов: Angry Birds это сорок-какая-то игра из тех, что делали Rovio. Все провалились, одна взлетела. И вывод – нет везения, есть работа, пробуйте-пробуйте-пробуйте, и у вас обязательно получится мегахит. Сейчас, после продажи студии, подумалось, что у истории вышло продолжение. Вот они уже десять с лишним лет после первого успеха пытаются выпустить второй хит. Ресурсов стало непредставимо больше, попыток наверняка было больше сорока. Результат – ноль. Не работает работа, нужно везение». И что: ничего не работает ☹️• Airbnb: 5 продуктовых уроков о том, как вводить новые функции
• В RuStore появилась авторизация через Tinkoff ID и мгновенная оплата с Tinkoff Pay
• Google предложит альтернативные системы оплаты в Великобритании
• Marvel Move — фитнес с супергероями
И что: еще пример Zombies, Run! показал, как интересно можно дополнить любое занятие нарративом. А как ваш продукт можно улучшить рассказами о зомби? А если зомби заменить супергероями, то можно сразу х2 к цене ставить.• Winamp возвращается с новыми приложениями
• BeReal продолжает расти
• Самые скачиваемые приложения в марте 2023
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Полное руководство для начинающих по автономным агентам
• ChatGPT — лучший помощник программиста. Примеры реальных задач. Плагины и инструменты
• Осваивают ли LLM модели мира, или лишь поверхностную статистику?
• Как мы перепридумали сценарии умного дома для Zigbee-устройств
• Ещё один Хаброметр
• Kandinsky создаёт игры
• Кормушка для собак с интеграцией Bitcoin и Lightning Network
• Потоковый проект в режиме реального времени с использованием данных смартфона
• Новые устройства Яндекса для умного дома
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.