А вот и подробный разбор новой фичи Context Receivers в Kotlin.
YouTube
Context Receivers Are Coming to Kotlin!
Kotlin 1.6.20 comes with a new toy: Context Receivers. You can use them to elegantly constrain functions (and more!) to a specific context from which they can be called. Sebastian (https://twitter.com/sebi_io) helps you figure out what exactly that means:…
👍7🔥2
Structured concurrency explained
Еща одна серия статей, на тему structured concurrency. Основные концепции, корутины, скоупы, обработка ошибок и вот это вот всё.
👉 Part 1: Introduction
👉 Part 2: Exceptions and Cancellations
Еща одна серия статей, на тему structured concurrency. Основные концепции, корутины, скоупы, обработка ошибок и вот это вот всё.
👉 Part 1: Introduction
👉 Part 2: Exceptions and Cancellations
🔥4👍2
В России запустили аналог Google Play — RuMarket
Ну что, вот и запустился российский стор – RuMarket. Кто, что и как – подробностей пока что не нашел, в некоторых источниках пишут, что инвесторами стали Сморгонский, генеральный директор российского подразделения Gett и группа частных IT-инвесторов.
Сам еще пока не ставил, пишут что на RuMarket уже закинули свои приложения ВТБ, Промсвязьбанк и Альфа-банк, а также ведутся переговоры с Сбер, Яндекс, VK и т.д.
Ну что, вот и запустился российский стор – RuMarket. Кто, что и как – подробностей пока что не нашел, в некоторых источниках пишут, что инвесторами стали Сморгонский, генеральный директор российского подразделения Gett и группа частных IT-инвесторов.
Сам еще пока не ставил, пишут что на RuMarket уже закинули свои приложения ВТБ, Промсвязьбанк и Альфа-банк, а также ведутся переговоры с Сбер, Яндекс, VK и т.д.
🤮72👍33💩30😁6
Дайджест недели
Апдейт по российскому стору RuMarket: в интернетах пишут, что это приложение – форк F-Droid, созданного британским программистом, якобы забыли затереть стринги в ресурсах 😁, более подробно можно почитать тут и тут.
Android 🤖
• Android — 9 Useful Kotlin Flow Operators You Need to Know
• Context Receivers Are Coming to Kotlin!
• Structured concurrency explained
• В России запустили аналог Google Play — RuMarket
• Creating an animated selector in Jetpack Compose
• Exploring Android 12: Data Access Rationale
• Exploring Android 13: Downgradable Permission
• Composable metrics
• Сравниваем готовые решения для реализации MVI-архитектуры на Android
• Реализация реакций в приложении ВКонтакте на Android
• Now in Android #59
• Android Mid level Interview questions
• Migrate Apps to Android12
• Refactoring an Android App to Kotlin Multiplatform
• Getting started with Canvas in Compose
• From View to Composable: A Quick jump to Jetpack Compose from an Android View mindset
• Animated Placeholder with Jetpack Compose
• All you need for MVI is Kotlin. How to reduce without a reducer?
• Implementing Complex UX/UI Animations in Spinner for Android Application
• Android App Excellence Summit 2022
iOS 🍏
• Learning SwiftUI Spring Animations: The Basics and Beyond
• Hot Reloading in Swift
• Производительность встроенных функций высшего порядка в сравнении с циклом for-in в Swift
• Apple всё ещё следит за вами. Без вашего согласия
• SwiftUI performance tips
• Автоматизируем iOS-сборку c помощью Jenkins
• Weak self, a story about memory management and closure in Swift
• 5 Useful Xcode Extensions to Make Work Easier
• Dismissing SwiftUI Views
• Use Swift Actor to handle APIs calls
• Using MetricKit to monitor user data like launch times
• SOLID Principles with Swift
• Finding memory leaks in iOS like a pro!
• The 8 Best iOS Development Tools for iOS Developers
• Navigation and Data Passing in SwiftUI
Кроссплатформа / Разработка 💻
• Подборка материалов по мобильной безопасности «Awesome Mobile Security»
• Плагин для Flutter теперь в AppMetrica
• Разработчик засыпает, просыпается маркетолог: как я приложение продвигал
• React + Flutter = Native
• Top 10 Libraries You Should Know for React Native in 2022
• Flutter vs. React Native in 2022: Detailed Framework Comparison
• Announcing React Native 0.68
• The Abstract Syntax Tree – Kotlin vs. Swift
• How to implement GraphQL with Flutter + GraphQL example
• Very good layered architecture in Flutter
← Previous | Next →
Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Подписаться: @mobile_native
Чат: @mobile_native_chat
Апдейт по российскому стору RuMarket: в интернетах пишут, что это приложение – форк F-Droid, созданного британским программистом, якобы забыли затереть стринги в ресурсах 😁, более подробно можно почитать тут и тут.
Android 🤖
• Android — 9 Useful Kotlin Flow Operators You Need to Know
• Context Receivers Are Coming to Kotlin!
• Structured concurrency explained
• В России запустили аналог Google Play — RuMarket
• Creating an animated selector in Jetpack Compose
• Exploring Android 12: Data Access Rationale
• Exploring Android 13: Downgradable Permission
• Composable metrics
• Сравниваем готовые решения для реализации MVI-архитектуры на Android
• Реализация реакций в приложении ВКонтакте на Android
• Now in Android #59
• Android Mid level Interview questions
• Migrate Apps to Android12
• Refactoring an Android App to Kotlin Multiplatform
• Getting started with Canvas in Compose
• From View to Composable: A Quick jump to Jetpack Compose from an Android View mindset
• Animated Placeholder with Jetpack Compose
• All you need for MVI is Kotlin. How to reduce without a reducer?
• Implementing Complex UX/UI Animations in Spinner for Android Application
• Android App Excellence Summit 2022
iOS 🍏
• Learning SwiftUI Spring Animations: The Basics and Beyond
• Hot Reloading in Swift
• Производительность встроенных функций высшего порядка в сравнении с циклом for-in в Swift
• Apple всё ещё следит за вами. Без вашего согласия
• SwiftUI performance tips
• Автоматизируем iOS-сборку c помощью Jenkins
• Weak self, a story about memory management and closure in Swift
• 5 Useful Xcode Extensions to Make Work Easier
• Dismissing SwiftUI Views
• Use Swift Actor to handle APIs calls
• Using MetricKit to monitor user data like launch times
• SOLID Principles with Swift
• Finding memory leaks in iOS like a pro!
• The 8 Best iOS Development Tools for iOS Developers
• Navigation and Data Passing in SwiftUI
Кроссплатформа / Разработка 💻
• Подборка материалов по мобильной безопасности «Awesome Mobile Security»
• Плагин для Flutter теперь в AppMetrica
• Разработчик засыпает, просыпается маркетолог: как я приложение продвигал
• React + Flutter = Native
• Top 10 Libraries You Should Know for React Native in 2022
• Flutter vs. React Native in 2022: Detailed Framework Comparison
• Announcing React Native 0.68
• The Abstract Syntax Tree – Kotlin vs. Swift
• How to implement GraphQL with Flutter + GraphQL example
• Very good layered architecture in Flutter
← Previous | Next →
Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Подписаться: @mobile_native
Чат: @mobile_native_chat
👍6🔥5
Обзор решений для навигации в iOS
Еща одна статейка на тему навигации в iOS, в которой сравниваются несколько реализаций, подход к построению навигации от Bado и RouteComposer.
Репозиторий с примерами кода можно посмотреть тут.
Читать (En)
Еща одна статейка на тему навигации в iOS, в которой сравниваются несколько реализаций, подход к построению навигации от Bado и RouteComposer.
Репозиторий с примерами кода можно посмотреть тут.
Читать (En)
👍11
MVC, MVP, MVI, MVVM and VIPER Design Patterns
Статья про всем известные design patterns (MVC, MVP, MVI, MVVM, VIPER), с объяснением базовых штук типа "архитектура", "для чего нужны паттерны" и т.д. и кратким разбором по каждому.
Читать (En)
Статья про всем известные design patterns (MVC, MVP, MVI, MVVM, VIPER), с объяснением базовых штук типа "архитектура", "для чего нужны паттерны" и т.д. и кратким разбором по каждому.
Читать (En)
👍28
Clean Architecture: Android App
Похоже намечается архитектурная неделя 😁, сбился с счету, ну пусть будет тысячная статья про организацию Clean Architecture.
Пример кода на гитхабе: Clean Architecture
Читать (En)
Похоже намечается архитектурная неделя 😁, сбился с счету, ну пусть будет тысячная статья про организацию Clean Architecture.
Пример кода на гитхабе: Clean Architecture
Читать (En)
🔥12👍5👎2
Android Architecture Blueprints v2
Продолжаем тему архитектуры.
👉 Репозиторий с примерами различных архитектур и паттернов под Android.
👉 Тут статейка по миграции Blueprints to Jetpack Compose.
👉 Ну и на всякий случай Guide to app architecture
Продолжаем тему архитектуры.
👉 Репозиторий с примерами различных архитектур и паттернов под Android.
👉 Тут статейка по миграции Blueprints to Jetpack Compose.
👉 Ну и на всякий случай Guide to app architecture
🔥8👍2
Kotlin Tips: Operators and Nullable Values
YouTube
Operator Functions With Nullable Values | Kotlin Tips 2023
In Kotlin, you can override operators like addition and subtraction for your classes and supply your own logic. But what if you want to allow null values, both on their left and right sides?
In this episode of Kotlin Tips, Sebastian (https://twitter.com/sebi_io)…
In this episode of Kotlin Tips, Sebastian (https://twitter.com/sebi_io)…
Forwarded from Записки разработчицы (Anna Zharkova)
Подготовила, надеюсь, интересный кейс для SwiftHero. Осталось только залить на гитхаб.
Разобрала до кишок работу с ServerDrivenUI для SwiftUI:
https://www.youtube.com/watch?v=XS6iH8ElD4o
Торопитесь, пока трансляция жива
Разобрала до кишок работу с ServerDrivenUI для SwiftUI:
https://www.youtube.com/watch?v=XS6iH8ElD4o
Торопитесь, пока трансляция жива
YouTube
Swift Heroes: The Extra. "ServerDriven SwiftUI. Managing declarative UI"
Swift Heroes: The Extra. "ServerDriven SwiftUI. Managing declarative UI" with Anna Zharkova, Lead Mobile Developer, Usetech Company
ServerDriven UI is an interesting approach to deal and manage UI and app settings remotely and flexible. It suits to create…
ServerDriven UI is an interesting approach to deal and manage UI and app settings remotely and flexible. It suits to create…
👍11
Интеграция Huawei Mobile Services (HMS)
Собрал несколько полезных статей/видосов по интеграции Huawei Mobile Services. В текущей, непонятной ситуации, может быть особо актуально.
Статьи
👉 Huawei Mobile Services и AppGallery: подробная инструкция для начинающих
👉 Интеграция Huawei Mobile Services со второй попытки
👉 Выходим на рынок Huawei, или Как мы адаптировали приложение для работы с HMS
👉 Как мы интегрировали Huawei Mobile Services в два этапа
Видосы
👉 Интеграция Huawei Mobile Services (HMS) со второй попытки
👉 Интеграция Huawei Mobile Services (HMS)
👉 Huawei Mobile Services
Официальная документация
👉 HMS Core
👉 Documents and Guides
Собрал несколько полезных статей/видосов по интеграции Huawei Mobile Services. В текущей, непонятной ситуации, может быть особо актуально.
Статьи
👉 Huawei Mobile Services и AppGallery: подробная инструкция для начинающих
👉 Интеграция Huawei Mobile Services со второй попытки
👉 Выходим на рынок Huawei, или Как мы адаптировали приложение для работы с HMS
👉 Как мы интегрировали Huawei Mobile Services в два этапа
Видосы
👉 Интеграция Huawei Mobile Services (HMS) со второй попытки
👉 Интеграция Huawei Mobile Services (HMS)
👉 Huawei Mobile Services
Официальная документация
👉 HMS Core
👉 Documents and Guides
🔥8👍4🤮3
Modeling Retrofit Responses With Sealed Classes and Coroutines
Пример того, как можно организовать обработку ответов от API с помощью sealed классов/интерфейсов и корутин. (Retrofit + Sealed classes/interfaces + Coroutines)
Читать (En)
Пример того, как можно организовать обработку ответов от API с помощью sealed классов/интерфейсов и корутин. (Retrofit + Sealed classes/interfaces + Coroutines)
Читать (En)
👍20🤮2
How ViewModels survive configuration changes
А вы знаете как в андроиде вьюмодельки переживают изменение конфигурации?
Если нет – вот статейка, в которой на примере Activity разобрали исходники из sdk, все достаточно просто. У Activity есть 2 метода, через которые и происходит вся работа.
👉 onRetainNonConfigurationInstance()
👉 getLastNonConfigurationInstance()
Читать (En)
А вы знаете как в андроиде вьюмодельки переживают изменение конфигурации?
Если нет – вот статейка, в которой на примере Activity разобрали исходники из sdk, все достаточно просто. У Activity есть 2 метода, через которые и происходит вся работа.
👉 onRetainNonConfigurationInstance()
👉 getLastNonConfigurationInstance()
Читать (En)
👍22
SwiftUI vs Jetpack Compose by an Android Engineer
Каким-то чудом забыл запостить интересную статью, в которой сравниваются 2 достаточно актуальных фреймворка Jetpack Compose и SwiftUI. Вот, исправляю ситуацию)
Читать (En)
Каким-то чудом забыл запостить интересную статью, в которой сравниваются 2 достаточно актуальных фреймворка Jetpack Compose и SwiftUI. Вот, исправляю ситуацию)
Читать (En)
👍15
Отменяем операции правильно на примере корутин
Еще одна статья про работу с корутинами, в частности про то, как отменять корутины.
Вопрос на засыпку. В статье приводится пример с отменой Thread. Так вот, знаете ли вы как можно остановить/отменить тред?
P.S. как-нибудь выделю время и сделаю подборку по многопоточке.
Читать (Ru)
Еще одна статья про работу с корутинами, в частности про то, как отменять корутины.
Вопрос на засыпку. В статье приводится пример с отменой Thread. Так вот, знаете ли вы как можно остановить/отменить тред?
P.S. как-нибудь выделю время и сделаю подборку по многопоточке.
Читать (Ru)
👍28
Clean Code — A practical approach
Советы с примерами по написанию чистого кода. По сути, все эти советы/рекомендации сводятся к довольно простым штукам (нейминг, короткие функции с минимальным количеством аргументов, комментарии в нужных местах и т.д.). Но как показывает практика, многие пренебрегают и такими, казалось бы базовыми вещами.
Еще в статье затрагивается такая интересная тема, как рефакторинг, полезно будет почитать начинающим.
Читать (En)
Советы с примерами по написанию чистого кода. По сути, все эти советы/рекомендации сводятся к довольно простым штукам (нейминг, короткие функции с минимальным количеством аргументов, комментарии в нужных местах и т.д.). Но как показывает практика, многие пренебрегают и такими, казалось бы базовыми вещами.
Еще в статье затрагивается такая интересная тема, как рефакторинг, полезно будет почитать начинающим.
Читать (En)
👍7🔥6
Дайджест недели
Решил запостить большой и мощный 💪 2-ух недельный дайджест сегодня, т.к. впереди майские праздники, хочется отдохнуть.
Из интересных новостей. Вышла первая бета Android 13, подробности тут. За 2021 Google заблокировала более 1 миллиона приложений, нарушающих политику. Apple снова начала удалять приложения из App Store, которые давно не обновлялись – на решение вопроса с обновлением, разработчикам дают 30 дней, в противном случае будут удалять.
Всех с наступающими праздниками!!! Увидимся на следующей неделе)
Android 🤖
• Clean Architecture: Android App
• Android Architecture Blueprints v2
• Kotlin Tips: Operators and Nullable Values
• Интеграция Huawei Mobile Services (HMS)
• Modeling Retrofit Responses With Sealed Classes and Coroutines
• How ViewModels survive configuration changes
• Отменяем операции правильно на примере корутин
• Keep Rules in the Age of Kotlin
• Нативные автотесты Android: Наш путь
• Slack-Gradle-Plugin
• Gradle for Beginners (Build Types, Product Flavors, Build Variants, Source Sets)
• Kotlin Sequences: Getting Started
• Object equality in Java and Kotlin
• Twitter going all in on Jetpack Compose for feature development: greater productivity, less bugs
• Measure and improve performance with Macrobenchmark
• To Compose, or Not to Compose, That is the Question
• Exploring Google Map Compose Library For Android
• Kotlin Coroutine (High-quality Course)
• Android code style using Spotless and Ktlint
• How to Format All Possible Errors From API Calls in Android With Clean Architecture
iOS 🍏
• Обзор решений для навигации в iOS
• Swift Heroes: The Extra. "ServerDriven SwiftUI. Managing declarative UI"
• Type placeholders in Swift
• The Golden Rules of weak self
• Transitions in SwiftUI
• Exploring SwiftUI Sample Apps
• [boringssl] Failed to log metrics
• SwiftUI Case Study: Data modelling of Brotherhood Alchemist
• Downloading and Caching images in SwiftUI
• The S in SOLID - Swift Edition
• Unit Testing and UI Testing in Swift
• Using new Swift Async Algorithms package to close the gap on Combine
• Building an Accessible Custom Tab Bar
• How to Use Generics in Swift
• Core Image Tutorial: Getting Started
• Use Dependency Injection to Unit Test a ViewModel in Swift
• Localization in iOS App using MapKit and CoreLocation
• Write Cleaner Swift Using MVVM With Property Wrappers
• Простой способ обнаружить retain cycle в UIViewController
• Top 7 Subtle Swift Features
Кроссплатформа / Разработка 💻
• MVC, MVP, MVI, MVVM and VIPER Design Patterns
• SwiftUI vs Jetpack Compose by an Android Engineer
• Clean Code — A practical approach
• Как мы в QIWI внедряли Kotlin Multiplatform Mobile Часть 2: Смотрим шире
• Стелем мягкую соломку на жёсткий Flutter: как подготовиться к первому проекту, чтобы не провалить его
• Better API calls in Flutter
• Kotlin Multiplatform Mobile — sharing the UI State management
• Как работает Backend-Driven UI на мобильном клиенте
• Practical Guide: Flutter + Firebase + FlutterFire CLI + CI (Codemagic)
• Top Flutter & Dart packages in 2022
← Previous | Next →
Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Подписаться: @mobile_native
Чат: @mobile_native_chat
Решил запостить большой и мощный 💪 2-ух недельный дайджест сегодня, т.к. впереди майские праздники, хочется отдохнуть.
Из интересных новостей. Вышла первая бета Android 13, подробности тут. За 2021 Google заблокировала более 1 миллиона приложений, нарушающих политику. Apple снова начала удалять приложения из App Store, которые давно не обновлялись – на решение вопроса с обновлением, разработчикам дают 30 дней, в противном случае будут удалять.
Всех с наступающими праздниками!!! Увидимся на следующей неделе)
Android 🤖
• Clean Architecture: Android App
• Android Architecture Blueprints v2
• Kotlin Tips: Operators and Nullable Values
• Интеграция Huawei Mobile Services (HMS)
• Modeling Retrofit Responses With Sealed Classes and Coroutines
• How ViewModels survive configuration changes
• Отменяем операции правильно на примере корутин
• Keep Rules in the Age of Kotlin
• Нативные автотесты Android: Наш путь
• Slack-Gradle-Plugin
• Gradle for Beginners (Build Types, Product Flavors, Build Variants, Source Sets)
• Kotlin Sequences: Getting Started
• Object equality in Java and Kotlin
• Twitter going all in on Jetpack Compose for feature development: greater productivity, less bugs
• Measure and improve performance with Macrobenchmark
• To Compose, or Not to Compose, That is the Question
• Exploring Google Map Compose Library For Android
• Kotlin Coroutine (High-quality Course)
• Android code style using Spotless and Ktlint
• How to Format All Possible Errors From API Calls in Android With Clean Architecture
iOS 🍏
• Обзор решений для навигации в iOS
• Swift Heroes: The Extra. "ServerDriven SwiftUI. Managing declarative UI"
• Type placeholders in Swift
• The Golden Rules of weak self
• Transitions in SwiftUI
• Exploring SwiftUI Sample Apps
• [boringssl] Failed to log metrics
• SwiftUI Case Study: Data modelling of Brotherhood Alchemist
• Downloading and Caching images in SwiftUI
• The S in SOLID - Swift Edition
• Unit Testing and UI Testing in Swift
• Using new Swift Async Algorithms package to close the gap on Combine
• Building an Accessible Custom Tab Bar
• How to Use Generics in Swift
• Core Image Tutorial: Getting Started
• Use Dependency Injection to Unit Test a ViewModel in Swift
• Localization in iOS App using MapKit and CoreLocation
• Write Cleaner Swift Using MVVM With Property Wrappers
• Простой способ обнаружить retain cycle в UIViewController
• Top 7 Subtle Swift Features
Кроссплатформа / Разработка 💻
• MVC, MVP, MVI, MVVM and VIPER Design Patterns
• SwiftUI vs Jetpack Compose by an Android Engineer
• Clean Code — A practical approach
• Как мы в QIWI внедряли Kotlin Multiplatform Mobile Часть 2: Смотрим шире
• Стелем мягкую соломку на жёсткий Flutter: как подготовиться к первому проекту, чтобы не провалить его
• Better API calls in Flutter
• Kotlin Multiplatform Mobile — sharing the UI State management
• Как работает Backend-Driven UI на мобильном клиенте
• Practical Guide: Flutter + Firebase + FlutterFire CLI + CI (Codemagic)
• Top Flutter & Dart packages in 2022
← Previous | Next →
Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Подписаться: @mobile_native
Чат: @mobile_native_chat
🔥8👍2👏2
Dependency Inversion Principle: How Google Developers write code
Простой и понятный пример Dependency Inversion Principle.
DIP соответствует D в SOLID и гласит: Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
Несколько полезных ссылок про SOLID
👉 The S in SOLID - Swift Edition
👉 SOLID Principles: The Kotlin Way
👉 S.O.L.I.D Principles in Android Development
👉 Тысячная статья про принципы SOLID
👉 SOLID Principles with Swift
Читать (En)
Простой и понятный пример Dependency Inversion Principle.
DIP соответствует D в SOLID и гласит: Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
Несколько полезных ссылок про SOLID
👉 The S in SOLID - Swift Edition
👉 SOLID Principles: The Kotlin Way
👉 S.O.L.I.D Principles in Android Development
👉 Тысячная статья про принципы SOLID
👉 SOLID Principles with Swift
Читать (En)
👍11🔥4
Как мы используем фича-флаги в мобильном приложении QIWI Кошелек
Статья про реализацию Feature Flags/Feature Toggle от QIWI.
Если вдруг кто не знает, через фича-флаги можно удаленно включать/отключать нужный функционал, проводить а/б тесты, ну и делать другие прикольные вещи.
Библиотечка от QIWI тут: FeatureToggle
Читать (Ru)
Статья про реализацию Feature Flags/Feature Toggle от QIWI.
Если вдруг кто не знает, через фича-флаги можно удаленно включать/отключать нужный функционал, проводить а/б тесты, ну и делать другие прикольные вещи.
Библиотечка от QIWI тут: FeatureToggle
Читать (Ru)
👍12
Несколько важных Google-новостей
👉 Google запускает бесплатный курс Android Basics with Compose
👉 Опубликовали программу Google I/O
👉 Вышло первое developer preview of Privacy Sandbox on Android
В сообществе поговаривают, что в РФ начали отваливаться сервисы Firebase, а конкретно Firebase App Distribution и Firebase Cloud Message. Более детальной инфы пока нет.
Из соседнего чата: "Firebase is available in most countries and regions. However, Firebase restricts access to some of its business services in certain countries or regions. At this time, distribution of pre-release app versions via Firebase App Distribution is restricted in Russia”.
👉 Google запускает бесплатный курс Android Basics with Compose
👉 Опубликовали программу Google I/O
👉 Вышло первое developer preview of Privacy Sandbox on Android
В сообществе поговаривают, что в РФ начали отваливаться сервисы Firebase, а конкретно Firebase App Distribution и Firebase Cloud Message. Более детальной инфы пока нет.
Из соседнего чата: "Firebase is available in most countries and regions. However, Firebase restricts access to some of its business services in certain countries or regions. At this time, distribution of pre-release app versions via Firebase App Distribution is restricted in Russia”.
Google Play запретил разработчикам загружать и обновлять платные приложения в России
С 5 мая загрузка и обновление уже существующих платных приложений в Google Play запрещены в России. Для бесплатных приложений изменений нет.
С 5 мая загрузка и обновление уже существующих платных приложений в Google Play запрещены в России. Для бесплатных приложений изменений нет.
👍48💩36👎8😱7🤔5🥰3🤬3🤮3❤1🔥1👏1