Как стать автором
Поиск
Написать публикацию
Обновить
39.98

iOS *

Мобильная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

Kotlin Multiplatform Mobile — совместное управление состоянием пользовательского интерфейса

Время на прочтение6 мин
Количество просмотров3.1K

В своей предыдущей статье я рассказал о том, почему считаю, что мы можем значительно улучшить управление UI State (состояние пользовательского интерфейса) между View (представление) и ViewModel (модель представления) в Android, используя архитектуру Model-View-Intent (модель-представление-намерение) (MVI) с помощью Finite State Machine (машина с конечным числом состояний. конечный автомат) (FSM).

В этой статье я подскажу вам шаги, необходимые для модернизации этого решения до уровня Kotlin Multiplatform Mobile (KMM), где можно воспользоваться общим исходным кодом, содержащим MVI+FSM, так что обе платформы — Android и iOS — могут унаследовать его преимущества, отвечая только за платформозависимые реализации: UI/UX.

Читать далее

О чём расскажут на Mobius 2022 Spring: декларативный UI, глубокие ссылки и многое другое

Время на прочтение10 мин
Количество просмотров1.8K

Мобильным разработчикам давно знакома конференция Mobius, но в этот раз она пройдёт в необычном формате. В конце мая поучаствовать можно будет в онлайне (как в предыдущие два года), а вот в июне будет ещё и офлайн-день в Петербурге.

Онлайновая часть будет сосредоточена на докладах, а офлайновая на живом общении: там будет сделано всё, чтобы участники могли вдоволь пообщаться и друг с другом, и со спикерами. Но понятно, что без докладов не обойдётся и в офлайне.

И сейчас, когда большинство тем докладов уже известно, расскажем Хабру, о чём именно они будут.

Читать далее

Асинхронный код синхронно: как устроено юнит-тестирование в СберМаркете

Время на прочтение7 мин
Количество просмотров4.2K

Привет! Меня зовут Владислав Сединкин, я работаю iOS-разработчиком в СберМаркете. Сегодня я расскажу, как мы проводим юнит-тестирование, с какими сложностями сталкивались при написании тестов и как их решали.  

Я выступал с этим докладом на iOS Meetup | СберМаркет Tech, здесь его сжатая версия.

Читать далее

Правильно подключаем тяжелые зависимости к Xcode проекту через Swift Package Manager

Время на прочтение7 мин
Количество просмотров7.8K

В этой статье я расскажу о проблемах с которыми я столкнулся при подключении тяжелых зависимостей к iOS проекту с помощью Swift Package Manager и о способе их решения.

Читать далее

Дайджест интересных материалов для мобильного разработчика #442 (9 — 15 мая)

Время на прочтение4 мин
Количество просмотров2.5K
В нашем новости дайджеста анонсы с Google I/O 2022 и выселение Carthage из git, загадочный WorkManager и замена натива веб-приложением, регрессионное тестирование, вопросы с собеседования, миллиарды уведомлений в месяц и многое другое. Подключайтесь!

Читать дальше →

Особенности разработки для WatchOS приложений для здоровья

Время на прочтение11 мин
Количество просмотров3.9K

Достаточно плотно разработкой программного обеспечения для часов я занимаюсь с 2017 года. За этот период сменилось 4 версии WatchOS (5, 6, 7, 8). Появилось больше функционала и исправлено множество баг с внедрением каждой новой версии Swift. Complications стали более самостоятельной частью приложения.

За 5 лет работы в сфере разработки приложений для часов мне пришлось столкнуться с множеством различных проблем и задач. Я хотел бы поделиться опытом и получить критические замечания относительно проделанной работы. Заранее сделаю оговорку, что решения, используемые в моей разработке, не претендуют на истинно верные. Не буду спорить, что что-то можно было бы сделать по-другому и лучше.

Читать далее

Дайджест недели (мобильная разработка) – #2

Время на прочтение2 мин
Количество просмотров1.9K

Главным событием этой недели было Google I/O, на которой представили некоторые нововведения, зарелизили ряд новых версий библиотек и инструментов. Из интересного: вышла вторая Beta Android 13, запустили сервис Google Play SDK Index, представили Flutter 3, выложили исходники приложения Now in Android. Все ссылки в дайджесте.

Дайджест и другие полезные материалы для мобильных разработчиков доступны в моем тг-канале Mobile Native, присоединяйтесь.

Android ?

• 13 Things to know for Android developers at Google I/O!
• Google Play SDK Index
• Что нового в инструментах Android-разработки
• Что нового в Jetpack Compose (Beta 1.2)
• Now in Android - a new, open source, real-world sample app
• Вышла вторая Beta Android 13
• Android Lint. Подборка
• Fragula – swipe-to-dismiss extension for navigation component library for Android
• Письмо счастья: как мы разделили наши сборки для AppGallery и Google Play
• Compose performance
• Jetpack DragAndDrop Released 1.0.0
• Here's a productivity hack to save tens of engineering hours* when working with Jetpack Compose!
• Android Studio Chipmunk Released
• Understand Proguard Generated Files and Manually De-obfuscate Stacktrace
• Build a Custom IntelliJ Code Inspection Plugin
• How To Use Android’s Proto DataStore With Kotlin Support
• The Guide To Your First Annotation Processor with KSP (And Becoming A Kotlin Artist)
• Airbnb uses Jetpack Compose to empower devs to do their best work

iOS ?

• Apple отключила оплату в App Store со счёта мобильного у «Мегафона», Yota и Tele2
• Write Beautiful Code With Swift Result Builder
• Modeling errors in Swift
• A flexible way to handle and alert errors in SwiftUI
• How do we use SwiftUI in the Medium iOS application
• Заполнители типа в Swift: что это такое и когда их следует использовать
• On iOS applications architecture
• 5 актуальных расширений Xcode для оптимизации разработки
• 10 Tips and Tricks for Swift Developers
• How to Read Websites in SwiftUI — Data Scraping in iOS
• Swift: A few tips for improving code quality
• SSL/Certificate Pinning — iOS 14.0 Never easy before
• Clean Architecture: iOS App
• Creating hex-based colors in UIKit, AppKit and SwiftUI
• Core Data Relationship in Swift 5— made simple
• Building a document scanner in SwiftUI
• Bottom Sheet, shall we drop the formalities?
• Introduction to Dependency Injection with Needle - The Uber Way
• SwiftUI Still Isn’t Production-Ready

Читать далее

Заполнители типа в Swift: что это такое и когда их следует использовать

Время на прочтение4 мин
Количество просмотров3.1K

Заполнители типа (type placeholders) — это новая языковая фича, представленная в Swift 5.6 (Xcode 13.3).

Сама концепция очень проста - вместо указания конкретного типа мы можем поставить _ (заполнитель типа), который предписывает компилятору самому определить заполняемый тип.

В следующем примере я использую заполнитель типа для name, который впоследствии разрешается в String.

Читать далее

Выселяем Carthage из git, или Как мы связали Carthage + Rome + S3 в нашем проекте

Время на прочтение9 мин
Количество просмотров1.2K


Сегодня для управления внешними зависимостями мы используем Carthage, это один из популярных в iOS-среде инструментов. Он умеет собирать зависимости из кэша, но не управлять его организацией и хранением. Для этого нужно задействовать сторонние инструменты, и мы расскажем, как решали задачу по работе с удалёнными зависимостями. Наш опыт может быть полезен всем, кто захочет пройти этот тернистый путь интеграции remote cache через связку Rome + Carthage + S3.
Читать дальше →

Дайджест недели (мобильная разработка) – #1

Время на прочтение2 мин
Количество просмотров2K

Привет, Хабр! Каждую неделю, в своем телеграм-канале Mobile Native, я публикую дайджест с интересными и полезными материалами (новости, статьи, инструменты, библиотеки и т.д.) для мобильных разработчиков. Решил попробовать публиковать эту рубрику и на Хабре. Посмотрим, что из этого получится.

Android ?

• Dependency Inversion Principle: How Google Developers write code
• Как мы используем фича-флаги в мобильном приложении QIWI Кошелек
• Google запускает бесплатный курс Android Basics with Compose
• Опубликована программа Google I/O
• The first developer preview of Privacy Sandbox on Android
• Google Play запретил разработчикам загружать и обновлять платные приложения в России
• Learn Dagger 2 to Hilt for Android Easily in under 10 Minutes
• Jetpack Compose Dropdown
• S.O.L.I.D Principles (Examples in Kotlin)
• Kotlin-inline, crossline, noinline function and reified: Everything you need to know(Android) — Part 1
• 7 things to keep in mind while building jetpack composable’s.
• Architecture MAD Skills series wrap up
• Топ вопросов работодателю от Android-разработчика
• Isolate Koin Within an Android Module
• Kotlin, обрабатываем исключения в корутинах правильно
• The curious case of crashing Workers
• Material Components Android 1.6.0 Released
• Конвергенция в многомодульном приложении
• Passive Views: keep your UI code simple and stupid
• CI-CD: Firebase App Distribution with Fastlane on Android
• Creating reliable tests for Android notifications

iOS ?

• I replaced my native iOS app with a cross platform web app and no-one noticed
• Measuring app performance in Swift
• Types of memory in swift
• Improve Performance in Your iOS Applications — Part 1
• Swift 5.7: Unwrapping Optionals Gets an Improvement
• Clarifying criteria & new timing extension for App Store Improvements process
• Тест-ревью: как прошли два года написания unit-тестов
• Is It Possible to Have a Half-modal View in SwiftUI?
• Swift visitor design pattern
• Two Ways to Unit Test Notification Center in Swift
• Send Events from SwiftUI to UIKit and Vice Versa
• AsyncThrowingStream and AsyncStream explained with code examples
• AttributedString’s Codable format and what it has to do with Unicode
• SwiftUI Supporting External Screens
• Flow Navigation With SwiftUI (Revisited)
• Делаем патч для Pods библиотеки
• Как нативно визуализировать голос в iOS
• 6 Tips to improve Coding of Swift

Читать далее

Как нативно визуализировать голос в iOS

Время на прочтение13 мин
Количество просмотров6.8K

Реализовать запись и проигрывание аудиофайлов в iOS несложно. Но если к этому добавляется задача визуализировать звук в момент записи с микрофона, это может вызвать сложности даже у опытного программиста, который мало работал с AVFoundation — мультимедийным фреймворком для работы с аудиовизуальными носителями.

В статье расскажу, как в iOS нативно визуализировать голос в процессе записи и проведу краткий экскурс в физику звукозаписи.

Читать далее

Синхронный вывод на экран распознаваемого текста на Flutter

Время на прочтение8 мин
Количество просмотров3.1K

В статье хочу поделиться опытом создания легкого приложения, которое синхронно проговариваемой фразе выделяет текст внутри подсказки.

От клиента поступил заказ на разработку тренажера говорения на иностранных языках. Пользователю показывается фраза, он ее произносит, и по мере произношения (в случае правильного произношения) текстовый блок меняется по принципу караоке подсказки.

За основу приложения был взят готовый  example с pub.dev https://pub.dev/packages/speech_to_text/example

Чтение займет не более 5-ти минут

Делаем патч для Pods библиотеки

Время на прочтение3 мин
Количество просмотров2.3K

Приветствую друзья на связи автор телеграм канала ReactNative - info, недавно столкнулся с одной интересной проблемой, сборка архива для iOS приложения постоянно завершалась такой ошибкой:

error: Abort trap: 6 (in target 'iOSPhotoEditor' from project 'Pods')

Читать далее

Ближайшие события

Round Table: архитектурный UI паттерн для iOS платформы

Время на прочтение8 мин
Количество просмотров2.8K

На связи Станислав Потемкин, iOS Tech Lead в компании Jivo.

Большой популярностью вполне заслуженно пользуются некоторые известные архитектурные паттерны, например универсальные MVC, MVP, MVVM, VIPER, и слегка платформенный Clean Swift (VIP).

У каждого из них свои особенности, каждый хорош в той или иной ситуации. Идеального для всех случаев инструмента, как известно, не существует: нужно выбирать с учётом проекта и команды.

На хабре уже была статья многолетней давности с неплохим разбором особенностей большинства этих архитектур, а именно: MVC, MVP, MVVM, VIPER. Плюс также есть статья отдельно про Clean Swift (VIP).

Мы в Jivo сначала пользовались подобием MVP, но затем со временем (и по мере роста) нам начали открываться некоторые не очень комфортные особенности этой архитектуры для наших условий. Соответственно, была произведена попытка выбрать наиболее комфортную из других популярных, но везде встречались те или иные не очень приятные нюансы.

В итоге мы решили изобрести свой велосипед исследовать область архитектурного вопроса с нового ракурса, и в последствии пришли к паттерну, который получил наименование Round Table.

Читать далее

Почему программистам нужно знать структуры данных и как я сэкономил компании $22 000 в год

Время на прочтение1 мин
Количество просмотров22K

Как я оптимизировал аналитику используя структуры данных. Что в итоге сэкономило $22 000

Читать далее

Как начать писать приложения на ClojureDart

Время на прочтение4 мин
Количество просмотров5.7K

16 апреля зарелизился ClojureDart, а это значит, что для любителей Clojure открылась возможность писать мобильные, веб- и десктоп-приложения на Flutter. Зачем использовать для этого Clojure, как бы очевидно это ни было, выходит за границы фокуса статьи.

На текущий момент инструменты еще не отшлифованы, нет репла(!) и автодополнений для dart-интеропа, но пользоваться можно, и некоторые плюшки кложуры уже показали себя (например, nest-макрос, убирающий проблему вложенности).

В этой статье хочу рассказать, как написать свое первое flutter-приложение на Clojure, какими инструментами удобно пользоваться, где искать ответы на вопросы. Статья для тех, кто имеет хотя бы минимальный опыт работы с Clojure.

Читать далее

Дайджест интересных материалов для мобильного разработчика #441 (25 апреля — 2 мая)

Время на прочтение4 мин
Количество просмотров2.6K
C праздником и новым дайджестом! В новом выпуске два года Unit-тестов и убыль приложений в Google Play, темная сторона виджетов и бэкенд от Snap, год ATT, четыре всадника джуна и многое другое.

Читать дальше →

Как работает Backend-Driven UI на мобильном клиенте

Время на прочтение12 мин
Количество просмотров32K

Привет всем, кто хочет изменять интерфейс мобильного приложения до выхода нового релиза, всем, кто хочет без лишних доработок на клиенте проводить А/B-тестирование, и всем, кто хочет забыть о срочных «новых пятничных промоакциях», которые нужны уже в понедельник. В этой статье мы поговорим об основах Backend-Driven UI: рассмотрим абстрактно, как всё работает на бэкенде и на клиенте. 

Читать далее

Автоматическое развёртывание инфраструктуры в iOS проекте

Время на прочтение42 мин
Количество просмотров3.8K

Рассказываем о том, как автоматизировать процессы онбординга и развёртывания инфраструктуры в iOS проекте с помощью Ansible.

Читать далее

Почему ваше приложение могут не пропустить или даже удалить из App Store?

Время на прочтение4 мин
Количество просмотров3.2K

Собрал список частых причин, как делать не надо. Некоторые из них основаны и на личном опыте, о других вы могли слышать, или даже использовали сами.

Все пункты перечислены не в порядке значимости или частоте.

Читать далее