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

iOS *

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

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

Переход на Swift UI и React Native: как за 3 месяца мы запустили новое приложение, быстро набравшее популярность

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

Всем привет!

На связи Дима Бобылев, CTO СберМаркета. В своей первой статье я рассказывал про взрывной рост нашего сервиса и какие неприятности с нами случились. ​​Знайте, мы не только выжили, но и продолжаем расти дальше и берем новые вызовы. 

Сегодня хочу поделиться историей, как мы запустили новое мобильное приложение. Для старта разработки накопилось достаточно причин: мы хотели развивать мобильную витрину и улучшать показатели конверсии, расширять штат и компетенции специалистов и реализовать подход mobile first. 

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

— Разве вы не испытывали удовольствия?

— Иногда. В промежутках между припадками ужаса.

(с) «Сами Боги»‎, Айзек Азимов

Под катом рассказываю, как мы это сделали и что получилось в итоге.  

Читать далее

Написать книгу за год — мечта или реальность?

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

Раньше я считал, что написать книгу — это история длиной в жизнь. Год назад я бы рассмеялся, если бы кто-то сказал, что к стольки-то годам напишу книгу на 250 страниц. Но с фактом не поспоришь: вот книга «Про доступность на iOS».

Рассказываю, как случайности и хорошая подготовка нашли друг друга.

Длинная история с картинками

Разработка Unity плагинов для iOS и Android

Время на прочтение23 мин
Количество просмотров4.7K
Есть куча ситуаций когда одной Unity недостаточно и нужно использовать возможности платформы. Банально, но до сих пор, в Unity нет работы с галерей и камерой из коробки. Понятно, что Unity не ограничивается мобильными платформами, но 60-70% всех мобильных игр, как бы говорят:

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

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

Время на прочтение3 мин
Количество просмотров2.8K
В новом выпуске поиск выключенных iPhone и локализация строк, оценки приложений самой Apple и свое приложение для Android Auto, ЦОДы в кармане, управление тестированием, зарплаты начинающих разработчиков, игровые метрики, рекордные расходы на приложения и многое другое!

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

iOS 15 позволяет находить даже выключенный iPhone: как это сделано и есть ли опасность

Время на прочтение8 мин
Количество просмотров56K
В iOS 15.0 появилась новая функция: iPhone теперь можно найти при помощи Find My, даже когда iPhone «отключен». Как это работает? Представляет ли функция проблему для безопасности?

Я заметил эту функцию довольно давно на одном из моих iPhone с бетой iOS 15. Вот скриншот, который я сделал в июле. С тех пор интерфейс пользователя немного изменился.


Пользователи далеко не сразу заметили существование этой функции. Нужно обновиться до iOS 15.0, включить в iPhone службы геолокации, войти в аккаунт пользователя, участвовать в сети Find My, и так далее. А под конец совершить самое странное действие, которое сегодня никто не делает: отключить iPhone. Но как только об этом узнал Twitter, популярность темы мгновенно выросла. Как и количество слухов о том, как реализована эта функция.
Читать дальше →

Swift: локализация строк, содержащих формы множественного числа

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

Задумывались ли вы когда-нибудь, зачем нужен файл .stringsdict?

Приходилось ли вам сталкиваться с грамматическими правилами для множественного числа в приложениях для iOS?

Если вы ответили утвердительно на любой из этих вопросов или вам просто интересно узнать что-то новое о локализации в Swift, то эта статья для вас. Здесь я постараюсь объяснить, чем полезен этот мощный инструмент, предоставленный нам компанией Apple.

Читать далее

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

Время на прочтение3 мин
Количество просмотров2.9K
В этой подборке 0-day уязвимости в iOS и скорость сборки для нее же, StoreKit 2 и Swift 5.5, тестовая ферма и правильная валидация для Android, битва снифферов, игры со шрифтами, подготовка к FAANG, релизные циклы и многое другое!

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

In-app purchases: продвинутые механики работы с покупками на Android и iOS

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

Привет, я Влад, core разработчик Adapty SDK для Android. Это заключительная статья из серии туториалов по внедрению внутренних покупок в приложениях Google Play и App Store.

В заключительной статье мы решили не замыкаться на одной платформе, а рассказать о продвинутых практиках работы с покупками на iOS и Android и показать, как сервер расширяет наши возможности при работе с подписками и какие преимущества даёт.

Читать далее

Скорость сборки в iOS

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

Всем привет! Меня зовут Юра, я – iOS-разработчик в hh.ru. В этой статье мы рассмотрим с одну из важнейших метрик для IOS-разработчика – скорость сборки. Я расскажу о том, как мы собираем эти метрики и что потом с ними делаем, и почему мы вообще решили всё это измерять. Видеоверсию можно посмотреть тут.

Читать далее

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

Время на прочтение4 мин
Количество просмотров2.7K
В новом дайжесте новые устройства Apple и автоматизация повышения качества кода, ускорение сборки и Jetpack для Wear OS, 16 советов по UX и UI дизайну, количество приложений на Flutter и React Native, ATT-согласие и многое другое!

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

Про многопоточность 2. GCD

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

Привет! Вот и новая часть серии статей про многопоточность дождалась своей очереди (ну вы поняли, да, типа очередь статей последовательная (͡° ͜ʖ ͡°) ). В этот раз мы поднимемся на ступеньку выше, рассмотрим фреймфорк Dispatch, разберем большую часть GCD примитивов, распространенные проблемы и поищем решения.

Читать далее

Kotlin Native. Работаем с новой моделью памяти

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

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Продолжаем рассматривать способы многопоточный работы в Kotlin Native. В предыдущих статьях мы уже рассмотрели существующие способы работы с многопоточностью с корутинами и без, и что делать с имеющимися болями. Теперь поговорим о новой модели управления памятью, которая появилась совсем недавно.

31 августа компания JetBrains представили превью новой модели управления памятью в Kotlin Native. Основной упор команда разработчиков сделала на безопасность шаринга между потоками, устранение утечек памяти и освобождение нас от использования специальных аннотаций. Также доработка коснулась Coroutines, и теперь можно без опаски переключаться между контекстами корутин без заморозки. Обновления подхватили и Ktor:  

Итак, что же нового появится в версии Kotlin 1.6.0-M1-139: 
1. Заявлено, что мы можем убрать все freeze() блоки (в том числе и во всех фоновых Worker), и переключаться между контекстами и потоками без каких-либо проблем. 

2.Использование AtomicReference или FreezableAtomicReference не приводит к утечкам памяти.

3.При работе с глобальными константами не нужно теперь использовать SharedImmutable.

4.При работе с Worker.execute producer больше не требует возвращать изолированный подграф объектов. 

Однако есть и нюансы:

Читать далее

iOS in-app purchases, часть 6: как реализовать скидки introductory offer, promotional offer, offer code

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

Сегодня разбираем, как реализовать скидки на iOS: стартовое предложение, промо-предложение и промокод. Это шестая из серии статей про подключению внутренних покупок в приложениях App Store, в которой мы с командой описываем весь процесс включения in-app purchases. Остальные доступны по ссылкам:

1. iOS in-app purchases, часть 1: Конфигурация и добавление в проект.

2. iOS in-app purchases, часть 2: Инициализация и обработка покупок.

3. iOS in-app purchases, часть 4: Тестирование покупок.

4. iOS in-app purchases, часть 3: Серверная верификация покупок.

5. iOS in-app purchases, часть 5: Обработка ошибок.

6. iOS in-app purchases, часть 6: Скидки для iOS in-apps purchases. — Вы тут.

Читать далее

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

Apple Keynote 2021: четыре iPhone 13, клавиатура в Apple Watch и другие анонсы

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

14 сентября Apple провела традиционную сентябрьскую конференцию, на которой анонсировала обновления своих флагманских продуктов. Новые iPhone, редизайн iPad mini и Apple Watch — что еще нового? В основном — эволюционные, а не революционные улучшения, но обо всем по порядку.

Читать далее

Apple Event. Текстовая трансляция (пост обновляется)

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

Здравствуйте, уважаемые поклонники и ненавистники техники Apple. С вами Сергей Вильянов, который снимал SIM-lock еще у первых iPhone, когда работал в "Компьютерре", а теперь покупает айфоны для издевательств строго за свои.

Сейчас мы вместе посмотрим презентацию Apple и узнаем - за что эти обаятельные парни в Купертино опять хотят много денег. И, скорее всего, получат.

Вот здесь собраны самые влажные предвкушения фанатов насчет того, что они ждут от новых iPhone. А мы просто внимательно посмотрим и послушаем презентацию, медленно пропитываясь негодованием и восторгом.

И да, если вам померещились ирония и сарказм, ВАМ НЕ ПОМЕРЕЩИЛОСЬ.

Погнали.

Читать далее

Реализация Unidirectional Data Flow в супераппе. Часть II

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

В предыдущей статье мы сформулировали нашу главную проблему при масштабировании Unidirectional Data Flow (UDF) — модуляризацию. Сегодня существует много UDF-фреймворков на Swift, но мало кто уточняет, как их масштабировать на большое, многомодульное приложение. Мы решили поделиться, с какими сложностями столкнулись и к каким решениям пришли. 

В статье рассмотрим 3 проблемы, с которыми столкнулись, и сравним, как разные фреймворки их решают. Для сравнения мы выбрали одни из самых популярных — ReSwift и The Composable Architecture (TCA). В конце расскажем, какое решение мы в итоге реализовали. Приступим!

Читать далее

Kotlin Native. Работаем с потоками с корутинами и без. Ч2

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

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Продолжаем рассматривать способы многопоточный работы в Kotlin Native.

В предыдущей части мы посмотрели некоторые нюансы работы с корутинами, как работать с Worker и AtomicReference.

Еще одним возможным API для работы с многопоточностью является DetachedObjectGraph.

Читать далее

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

Время на прочтение4 мин
Количество просмотров2.8K
В этом выпуске многопоточность Kotlin в iOS и игра в слова, судьба APK и MVVM для Android, первая игра на Unity, траты россиян на социальные сети, умные очки Facebook, худший вопрос разработчику и многое другое!

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

Kotlin Native. Работаем с потоками с корутинами и без. Ч1

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

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Совсем недавно компания JetBrains выпустила preview новой модели управления памятью. Это отличный повод сделать подробный ее разбор на практике, а также сравнить с моделью, используемой в KMM в текущих версиях. Но для начала неплохо было бы поговорить о тех возможностях работы в Kotlin Native, которые мы на практике не используем.

Если вы уже знакомы с тем, как работать с корутинами в Kotlin/Native и/или читали предыдущие статьи 1 и 2 автора, то пролистайте немного вниз. Материал может немного повторяться.

Когда мы работаем с Kotlin и Kotlin Multiplatform, то самым и простым удобным способом для настройки работы с многопоточностью в приложении являются Kotlin Coroutines. Наша задача сводится к настройке скоупов CoroutineScope для запуска корутин и suspend функций в основном потоке и фоновом. Т.к. в разных платформенных версиях языка Kotlin этот механизм реализуется по-разному, то необходимо кастомизировать получение контекста корутин с помощью expect/actual:

Читать далее

Актуальный App store review guidelines на русском языке

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

Изучая тему мобильной разработки, не стал ограничиваться только переводом Apple Human Interface Guidelines for iOS на русский язык.

Решил перевести и App store rewiev guidelines. Ранее на хабре уже публиковался перевод этого руководства, но по прошествии семи лет, думаю, обновление перевода будет не лишним.

Если увидите, что в каких-то местах текст переведен некорректно или плохо, и у вас есть идея о более правильном варианте, прошу написать на почту hamvestor@gmail.com, указав в теме письма "App store RG - перевод".

Перевод размещен здесь: App Store Review Guidelines (Google Docs).

Читать далее