12 ошибок при публикации приложения в RuStore — и как их избежать
Разработка приложения — трудоёмкий процесс, который требует множества усилий и времени. Но, как только заканчивается кодинг, необходимо опубликовать созданный продукт на цифровой витрине, чтобы пользователи могли его скачать и использовать. В статье рассмотрим 12 наиболее распространённых ошибок, которые допускают разработчики при публикации приложений в RuStore.
https://habr.com/ru/companies/vk/articles/737864/
#Android
👉 @developer_mobila
Разработка приложения — трудоёмкий процесс, который требует множества усилий и времени. Но, как только заканчивается кодинг, необходимо опубликовать созданный продукт на цифровой витрине, чтобы пользователи могли его скачать и использовать. В статье рассмотрим 12 наиболее распространённых ошибок, которые допускают разработчики при публикации приложений в RuStore.
https://habr.com/ru/companies/vk/articles/737864/
#Android
👉 @developer_mobila
👍2
О многообразии форм однонаправленных архитектур в Swift
Как SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет
Я уже писал о концепции “контейнеров состояний” в 2017 году. Шесть лет спустя мне все еще нравится строить на их основе большинство своих приложений, используя эту концепцию для двух главных слоев внутри моих приложений:
Слой представления: модель представления — это «контейнер состояния представления» (view state container), моделирующий состояние представления и бизнес-логику.
Доменный слой: обычно агрегирует корневые модели (или репозитории/сервисы данных), представляющие бизнес-правила и сохраняющие целостность и согласованность в рамках определенного ограниченного контекста (или сущности) в приложении.
Однако с 2017 года многое изменилось. В 2019 году Apple представила миру SwiftUI. И два года спустя появился async/await. Хоть мы и склонны думать, что хорошие архитектуры не должны зависеть от специфик фреймворков, хорошие архитектуры все-таки являются лояльными гражданами тех же самых фреймворков и общей экосистемы. Так… как же SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет? Давайте посмотрим.
https://jobandtalent.engineering/ios-architecture-an-state-container-based-approach-4f1a9b00b82e
#ios
👉 @developer_mobila
Как SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет
Я уже писал о концепции “контейнеров состояний” в 2017 году. Шесть лет спустя мне все еще нравится строить на их основе большинство своих приложений, используя эту концепцию для двух главных слоев внутри моих приложений:
Слой представления: модель представления — это «контейнер состояния представления» (view state container), моделирующий состояние представления и бизнес-логику.
Доменный слой: обычно агрегирует корневые модели (или репозитории/сервисы данных), представляющие бизнес-правила и сохраняющие целостность и согласованность в рамках определенного ограниченного контекста (или сущности) в приложении.
Однако с 2017 года многое изменилось. В 2019 году Apple представила миру SwiftUI. И два года спустя появился async/await. Хоть мы и склонны думать, что хорошие архитектуры не должны зависеть от специфик фреймворков, хорошие архитектуры все-таки являются лояльными гражданами тех же самых фреймворков и общей экосистемы. Так… как же SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет? Давайте посмотрим.
https://jobandtalent.engineering/ios-architecture-an-state-container-based-approach-4f1a9b00b82e
#ios
👉 @developer_mobila
Medium
iOS Architecture: A State Container based approach
iOS Architecture: A State Container based approach This article is the first in a three-part series. You can find the second one here and the third, and final one here. A warning about architecture …
👍2
Media is too big
VIEW IN TELEGRAM
Ускоряем написание кода
Делюсь популярными утилитами и фичами IDE, которые вы можете использовать, чтобы писать меньше кода == меньше багов
0:00 Вступление
0:44 Annotation Processing
2:46 Kotlin Symbol Processing
4:09 AvitoTech
4:37 Генерация кода из Gradle
5:08 Плагины Kotlin компилятора
6:20 Возможности IDE
7:50 Плагины IDE
8:43 Шаблоны Android Studio
9:18 Geminio
11:13 AI помощники
14:00 Заключение
источник
#Android
👉 @developer_mobila
Делюсь популярными утилитами и фичами IDE, которые вы можете использовать, чтобы писать меньше кода == меньше багов
0:00 Вступление
0:44 Annotation Processing
2:46 Kotlin Symbol Processing
4:09 AvitoTech
4:37 Генерация кода из Gradle
5:08 Плагины Kotlin компилятора
6:20 Возможности IDE
7:50 Плагины IDE
8:43 Шаблоны Android Studio
9:18 Geminio
11:13 AI помощники
14:00 Заключение
источник
#Android
👉 @developer_mobila
Как не писать сетевой слой в Android-приложениях с помощью автоматической генерации OpenAPI
Разрабатываемые приложения со временем имеют свойство увеличиваться и обрастать новой функциональностью. Как правило, сетевой слой при этом также разрастается, порой до немыслимых размеров. Поддерживать все это руками в какой-то момент становится довольно сложно. Мы отлично прочувствовали на себе все «прелести» такого подхода и в определенный момент решили обратить взор на возможности автоматической генерации. Поиски увенчались успехом, и теперь при разработке мы не пишем ни строчки сетевого кода сами.
Я Сергей Шевцов, Android-разработчик в компании KODE. В статье расскажу, как мы работаем с сетевым слоем в наших приложениях. Возможно, это поможет вам сэкономить многие часы написания сетевого кода.
https://habr.com/ru/articles/737010/
#Android
👉 @developer_mobila
Разрабатываемые приложения со временем имеют свойство увеличиваться и обрастать новой функциональностью. Как правило, сетевой слой при этом также разрастается, порой до немыслимых размеров. Поддерживать все это руками в какой-то момент становится довольно сложно. Мы отлично прочувствовали на себе все «прелести» такого подхода и в определенный момент решили обратить взор на возможности автоматической генерации. Поиски увенчались успехом, и теперь при разработке мы не пишем ни строчки сетевого кода сами.
Я Сергей Шевцов, Android-разработчик в компании KODE. В статье расскажу, как мы работаем с сетевым слоем в наших приложениях. Возможно, это поможет вам сэкономить многие часы написания сетевого кода.
https://habr.com/ru/articles/737010/
#Android
👉 @developer_mobila
👍2
Android 14: что появилось нового и что изменилось? Возможности новой версии мобильной ОС
Несколько дней назад появилась новость о выходе новой версии мобильной операционной системы Android 14. На данный момент исходники прошивки готовы для серии смартфонов Pixel, а чуть позже выйдут обновления для Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo и Xiaomi. Кроме того, готовы и универсальные сборки для разных устройств на базе архитектур ARM64 и x86_64. Давайте внимательно посмотрим на улучшения и дополнения, которые появились в новой версии.
https://habr.com/ru/companies/ru_mts/articles/766792/
#Android
👉 @developer_mobila
Несколько дней назад появилась новость о выходе новой версии мобильной операционной системы Android 14. На данный момент исходники прошивки готовы для серии смартфонов Pixel, а чуть позже выйдут обновления для Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo и Xiaomi. Кроме того, готовы и универсальные сборки для разных устройств на базе архитектур ARM64 и x86_64. Давайте внимательно посмотрим на улучшения и дополнения, которые появились в новой версии.
https://habr.com/ru/companies/ru_mts/articles/766792/
#Android
👉 @developer_mobila
👍3
Swift Concurrency Instrument: чем он полезен iOS-разработчику
При работе со Swift Concurrency часто хочется посмотреть, как работают созданные асинхронные задачи в приложении: узнать количество задач, время создания и длительность их выполнения. Посмотреть, на каких потоках и с какими приоритетами они выполняются.
В Xcode 14 появился специальный шаблон профилирования в Xcode Instruments — Swift Concurrency. Он позволяет наглядно визуализировать работу с асинхронным кодом.
Я — Светлана Гладышева, iOS-разработчик компании Surf. Давайте разберёмся, что нам может показать Swift Concurrency шаблон и как его использовать. А также на простых примерах посмотрим, какие ошибки можно обнаружить с его помощью.
https://habr.com/ru/companies/surfstudio/articles/737578/
#ios
👉 @developer_mobila
При работе со Swift Concurrency часто хочется посмотреть, как работают созданные асинхронные задачи в приложении: узнать количество задач, время создания и длительность их выполнения. Посмотреть, на каких потоках и с какими приоритетами они выполняются.
В Xcode 14 появился специальный шаблон профилирования в Xcode Instruments — Swift Concurrency. Он позволяет наглядно визуализировать работу с асинхронным кодом.
Я — Светлана Гладышева, iOS-разработчик компании Surf. Давайте разберёмся, что нам может показать Swift Concurrency шаблон и как его использовать. А также на простых примерах посмотрим, какие ошибки можно обнаружить с его помощью.
https://habr.com/ru/companies/surfstudio/articles/737578/
#ios
👉 @developer_mobila
Как подключить Lombok к Android Studio
Введение
Для тех, кто еще не перешел на Kotlin, или работает с легаси, код которого в ближайшее время не будет переведен на него, использование Lombok сильно уменьшает количество шаблонного кода. Он скрывает геттеры, сеттеры, конструкторы и другие шаблонные методы за аннотациями.
Например, вместо кода:
Мы просто укажем нужные аннотации, остальное Lombok сгенерирует под капотом:
https://habr.com/ru/articles/737698/
#Android
👉 @developer_mobila
Введение
Для тех, кто еще не перешел на Kotlin, или работает с легаси, код которого в ближайшее время не будет переведен на него, использование Lombok сильно уменьшает количество шаблонного кода. Он скрывает геттеры, сеттеры, конструкторы и другие шаблонные методы за аннотациями.
Например, вместо кода:
public class UserDto {
private String name;
public HumanDto(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
Мы просто укажем нужные аннотации, остальное Lombok сгенерирует под капотом:
@Data
@AllArgsConstructor
public class UserDto {
private String name;
}https://habr.com/ru/articles/737698/
#Android
👉 @developer_mobila
👍1
Мгновенное взаимодействие с жестами панорамирования
Apple выпустила потрясающий видеоролик для WWDC 2018 под названием Designing Fluid Interfaces, и один из ключевых выводов из него, который сделал один из докладчиков, Чан Карунамуни, звучит так: "Ищите задержки повсюду. Все должно реагировать мгновенно". (6:28)
Отличным примером этого является вид прокрутки в iOS. Если вы пролистываете контакты и касаетесь пальцем экрана, то прокрутка мгновенно останавливается и позволяет вам изменить ее положение. Подобное мгновенное поведение очень важно для наших собственных представлений, взаимодействий и анимаций.
https://christianselig.com/2023/05/instant-pan-gesture-interactions/
#ios
👉 @developer_mobila
Apple выпустила потрясающий видеоролик для WWDC 2018 под названием Designing Fluid Interfaces, и один из ключевых выводов из него, который сделал один из докладчиков, Чан Карунамуни, звучит так: "Ищите задержки повсюду. Все должно реагировать мгновенно". (6:28)
Отличным примером этого является вид прокрутки в iOS. Если вы пролистываете контакты и касаетесь пальцем экрана, то прокрутка мгновенно останавливается и позволяет вам изменить ее положение. Подобное мгновенное поведение очень важно для наших собственных представлений, взаимодействий и анимаций.
https://christianselig.com/2023/05/instant-pan-gesture-interactions/
#ios
👉 @developer_mobila
👍2
Проектируем быстрые действия в iOS: 58 гайдлайнов
Быстрые действия – полезная функция приложений в iOS, позволяющая упростить путь клиента и сократить число действий, требуемых для выполнения задач. Несмотря пользу, применяют ее далеко не все, а у тех, кто применяет, часто есть потенциал для улучшения.
Итак, если у вас iPhone, давайте зажмем иконку приложения своей компании, посмотрим, что у нее в быстрых действиях, и пройдемся по чек-листу. Напишите потом в комментариях, все ли идеально или нашли, что можно улучшить.
https://habr.com/ru/articles/737452/
#ios
👉 @developer_mobila
Быстрые действия – полезная функция приложений в iOS, позволяющая упростить путь клиента и сократить число действий, требуемых для выполнения задач. Несмотря пользу, применяют ее далеко не все, а у тех, кто применяет, часто есть потенциал для улучшения.
Итак, если у вас iPhone, давайте зажмем иконку приложения своей компании, посмотрим, что у нее в быстрых действиях, и пройдемся по чек-листу. Напишите потом в комментариях, все ли идеально или нашли, что можно улучшить.
https://habr.com/ru/articles/737452/
#ios
👉 @developer_mobila
How to create Responsive Layouts in Jetpack Compose
https://www.composables.com/tutorials/responsive-layout
#Android
👉 @developer_mobila
@Composable
fun ListDetailsExample() {
BoxWithConstraints(Modifier.fillMaxSize()) {
val isSmallScreen = maxWidth < 600.dp
if (isSmallScreen) {
ConversationsList()
} else {
var conversationId by remember {
mutableStateOf(-1)
}
Row(Modifier.fillMaxWidth()) {
ConversationsList(
modifier = Modifier.weight(1f),
onConversationSelected = {
conversationId = it
})
ConversationDetails(
modifier = Modifier.weight(2f),
selectedConversation = conversationId
)
}
}
}
}
https://www.composables.com/tutorials/responsive-layout
#Android
👉 @developer_mobila
Composables
How to create Responsive Layouts in Jetpack Compose – Composables
Building layouts for screens big and small
👍1
Построение графа зависимостей Objective-C файлов
В ряде случаев приложение, написанное на языке Objective-C, для улучшения функционирования и расширения его возможностей, приходится переписывать на Swift. Осуществление перевода на язык Swift сразу всего кода не всегда рационально, гораздо разумным представляется переписывание класса за классом. При этом сборка становится гибридной и соответственно необходимо делать так, чтобы все объявления были видимы в коде на обоих языках.
Ввиду того, что крупные проекты содержат множество файлов понять как последние связаны друг с другом может быть затруднительным. В этой связи прежде чем приступить к переводу логичным явилось бы создание скриптов, которые позволят визуализировать зависимости между файлами Objective-C и сделать анализ проекта более удобным и понятным.
https://habr.com/ru/articles/736516/
#ios
👉 @developer_mobila
В ряде случаев приложение, написанное на языке Objective-C, для улучшения функционирования и расширения его возможностей, приходится переписывать на Swift. Осуществление перевода на язык Swift сразу всего кода не всегда рационально, гораздо разумным представляется переписывание класса за классом. При этом сборка становится гибридной и соответственно необходимо делать так, чтобы все объявления были видимы в коде на обоих языках.
Ввиду того, что крупные проекты содержат множество файлов понять как последние связаны друг с другом может быть затруднительным. В этой связи прежде чем приступить к переводу логичным явилось бы создание скриптов, которые позволят визуализировать зависимости между файлами Objective-C и сделать анализ проекта более удобным и понятным.
https://habr.com/ru/articles/736516/
#ios
👉 @developer_mobila
👍1
ViewCompositionStrategy Demystified
В Jetpack Compose композиция представляет собой древовидную структуру, описывающую пользовательский интерфейс вашего приложения, и создается путем запуска композиций. Когда композиция больше не нужна, состояние перестает отслеживаться Jetpack Compose, и композиция утилизируется, чтобы освободить ресурсы.
https://medium.com/androiddevelopers/viewcompositionstrategy-demystefied-276427152f34
#Android
👉 @developer_mobila
В Jetpack Compose композиция представляет собой древовидную структуру, описывающую пользовательский интерфейс вашего приложения, и создается путем запуска композиций. Когда композиция больше не нужна, состояние перестает отслеживаться Jetpack Compose, и композиция утилизируется, чтобы освободить ресурсы.
https://medium.com/androiddevelopers/viewcompositionstrategy-demystefied-276427152f34
#Android
👉 @developer_mobila
👍2
Android Speech To Text — The missing guide
https://medium.com/@andraz.pajtler/android-speech-to-text-the-missing-guide-part-1-824e2636c45a
#Android
👉 @developer_mobila
https://medium.com/@andraz.pajtler/android-speech-to-text-the-missing-guide-part-1-824e2636c45a
#Android
👉 @developer_mobila
This media is not supported in your browser
VIEW IN TELEGRAM
Как определить пользовательские действия с URL для текстовых представлений SwiftUI
С выходом iOS 15 компания Apple добавила в представление SwiftUI Text встроенную поддержку формата markdown. Эта функция позволяет разработчикам легко создавать строки с гиперссылками, которые могут открывать веб-сайты, отправлять электронные письма или совершать телефонные звонки. Хотя в большинстве случаев этой функции достаточно, есть ситуации, когда разработчики хотят получить больший контроль над тем, что происходит при нажатии на ссылку.
https://swiftsenpai.com/development/swiftui-custom-url-action/
#ios
👉 @developer_mobila
С выходом iOS 15 компания Apple добавила в представление SwiftUI Text встроенную поддержку формата markdown. Эта функция позволяет разработчикам легко создавать строки с гиперссылками, которые могут открывать веб-сайты, отправлять электронные письма или совершать телефонные звонки. Хотя в большинстве случаев этой функции достаточно, есть ситуации, когда разработчики хотят получить больший контроль над тем, что происходит при нажатии на ссылку.
https://swiftsenpai.com/development/swiftui-custom-url-action/
#ios
👉 @developer_mobila
👍1
Всем, привет, мы исследовательское агентство SmartMinds и сейчас проводим опрос среди IT специалистов. Что хотим узнать: что важно при выборе работодателя, какие каналы являются эффективными при поиске работы и ходите ли вы на мероприятия для IT. Опрос анонимный, займет не более 3-х минут и мы будем благодарны всем, кто примет участие.
Пройти опрос
Пройти опрос
Лучший способ структурирования проекта для iOS
Очень важно поддерживать структуру проекта в чистоте и организованности. Когда вы работаете над большим проектом с сотнями файлов в команде, вы хотите, чтобы вы и ваши товарищи могли найти все, что вам нужно, в течение нескольких секунд. Проект должен быть организован с самого начала, и все члены команды должны следовать той структуре, которая у вас есть, потому что некоторые разработчики могут уйти, а новые могут присоединиться к вашей команде.
В этой статье я расскажу вам о некоторых распространенных ошибках, которые допускают младшие разработчики, и поделюсь тем, как я структурирую каждый проект, над которым работаю.
https://levelup.gitconnected.com/the-best-way-to-struct-your-ios-project-a2daee7dcb45
#ios
👉 @developer_mobila
Очень важно поддерживать структуру проекта в чистоте и организованности. Когда вы работаете над большим проектом с сотнями файлов в команде, вы хотите, чтобы вы и ваши товарищи могли найти все, что вам нужно, в течение нескольких секунд. Проект должен быть организован с самого начала, и все члены команды должны следовать той структуре, которая у вас есть, потому что некоторые разработчики могут уйти, а новые могут присоединиться к вашей команде.
В этой статье я расскажу вам о некоторых распространенных ошибках, которые допускают младшие разработчики, и поделюсь тем, как я структурирую каждый проект, над которым работаю.
https://levelup.gitconnected.com/the-best-way-to-struct-your-ios-project-a2daee7dcb45
#ios
👉 @developer_mobila
👍1
File importing and exporting in SwiftUI
#ios
👉 @developer_mobila
struct ImportingExampleView: View {
@State private var importing = false
var body: some View {
Button("Import") {
importing = true
}
.fileImporter(
isPresented: $importing,
allowedContentTypes: [.plainText]
) { result in
switch result {
case .success(let file):
print(file.absoluteString)
case .failure(let error):
print(error.localizedDenoscription)
}
}
}
}
https://swiftwithmajid.com/2023/05/10/file-importing-and-exporting-in-swiftui/#ios
👉 @developer_mobila
Swift with Majid
File importing and exporting in SwiftUI
A few weeks ago, we talked about photo and video picking in SwiftUI. Today we will continue the topic and learn how to import and export files in SwiftUI views. Fortunately, it is straightforward to do with the help of new fileImporter and fileExporter view…
👍1
Интеграция PreviewCard с Jetpack Compose на Android TV
В этой статье мы рассмотрим подключение Preview Card к родительскому контейнеру, в результате чего мы получим иммерсивную строку контента для предварительного просмотра выбираемых элементов.
https://joebirch.co/android/integrating-the-previewcard-with-jetpack-compose-on-android-tv/
#Android
👉 @developer_mobila
В этой статье мы рассмотрим подключение Preview Card к родительскому контейнеру, в результате чего мы получим иммерсивную строку контента для предварительного просмотра выбираемых элементов.
@Composable
fun PreviewCard(
modifier: Modifier = Modifier,
cardWidth: Dp,
cardHeight: Dp,
videoUrl: String,
hasFocus: Boolean,
clipStartPosition: Long = 2000000,
clipEndPosition: Long = 8000000,
thumbnailFrame: Long = 5000000,
thumbnailUrl: String? = null
)
https://joebirch.co/android/integrating-the-previewcard-with-jetpack-compose-on-android-tv/
#Android
👉 @developer_mobila
👍1
10 Tips to Get Your App Featured on the App Store
https://www.avanderlee.com/optimization/getting-app-featured-app-store/
#ios
👉 @developer_mobila
https://www.avanderlee.com/optimization/getting-app-featured-app-store/
#ios
👉 @developer_mobila
SwiftLee
10 Tips to Get Your App Featured on the App Store
Get your app featured by implementing my top 10 tips based on getting multiple apps featured in over ten years of development.
Handling Multiple Requests Using Combine in Swift
https://itnext.io/handling-multiple-requests-using-combine-in-swift-8e19e5c4fa52
#ios
👉 @developer_mobila
https://itnext.io/handling-multiple-requests-using-combine-in-swift-8e19e5c4fa52
#ios
👉 @developer_mobila