Обновить
62.63

iOS *

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

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

VIPER и SwiftUI: Model layer

Время на прочтение2 мин
Охват и читатели4.3K

Один из проектов нашей компании использует архитектуру VIPER. Во времена UIKit проблем с ней не было, но настала новая »темная» эра SwiftUI. В условиях SwiftUI «чистый» VIPER невозможен. Пришлось что-то придумывать, поскольку аналогичное решение в сети не подходило.

Читать далее

Apple Human Interface Guidelines for iOS на русском языке

Время на прочтение1 мин
Охват и читатели38K

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

Потратив некоторое количество времени, совладал с переводом этого материала.

Надеюсь, этот перевод поможет лучше понять правила, подходы и требования Apple к разработке и дизайну приложений.

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

Перевод размещен здесь: Human Interface Guidelines for iOS.

Читать далее

Геолокация в iOS: что тут сложного?

Время на прочтение7 мин
Охват и читатели8.3K

Из этой статьи вы узнаете о возможностях работы геолокации, когда приложение свёрнуто или закрыто; о тонкостях работы с авторизацией; о нововведениях в iOS 15, затрагивающих геолокацию.

Читать далее

Проектирование классов на Swift

Время на прочтение12 мин
Охват и читатели9K

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

Читать далее

Создаем ячейки в iOS

Время на прочтение13 мин
Охват и читатели6.2K

Типичный день мобильного разработчика: получил json, распарсил, отрисовал на UI ячейки, PROFIT.

Как элегантно колдовать с ячейками без изобретения велосипеда мы рассказали в одном из эпизодов «Охэхэнных историй», а потом сделали из него статью.

В сегодняшней программе  ячеек в iOS: разберемся какие ячейки бывают, посмотрим на ячейки в дизайн-системе hh.ru и их реализацию в коде и попробуем собрать свою ячейку.

Читать далее

Планы React Native на второе полугодие 2021 года

Время на прочтение5 мин
Охват и читатели4.1K

За последний год в нашем мире так много изменилось, и React Native не исключение. Мы приветствовали новых членов в нашей команде (с которыми мы очень рады встретиться лично!), наши проекты созрели, и появились новые возможности. Мы рады поделиться всем этим с вами в этой публикации!

В Facebook наша команда работает полугодиями. Каждое полугодие мы пересматриваем нашу стратегию, устанавливаем планы и делимся ими внутри компании. Сегодня мы хотим поделиться с вами, нашим комьюнити, нашими планами на второе полугодие 2021 года.

Вторая половина года - захватывающая для React Native. Наши основные направления включают развитие сообщества, начало развертывания новой архитектуры с открытым исходным кодом и продвижение технологии.

Читать далее

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

Время на прочтение3 мин
Охват и читатели3.1K
В новом дайджесте снова встроенные покупки, будущее Android UI и мобильное вещание, тренировки по алгоритмам и выравнивание текста, 46 приложений в месяц, маркетинг влияния и многое другое!

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

Работа с клавиатурой в iOS: как минимизировать копипасту

Время на прочтение6 мин
Охват и читатели3.5K

При разработке практически любого мобильного приложения разработчику придётся столкнуться с полями ввода. А где поля ввода — там и клавиатура, а также логика, связанная с обработкой событий её жизненного цикла: появления, сокрытия, изменения размеров.

Кто разрабатывал приложение под iOS, знает, что работа с клавиатурой — это часть очень похожего или даже одинакового кода, название которому — копипаста. Как мы с ним в Surf боролись и насколько удалось сократить кодовую базу, рассказываем в статье.

Читать далее

Альтернативы CDN: наша система доставки контента напрямую из стора в игру

Время на прочтение13 мин
Охват и читатели5.7K

War Robots всегда была игрой, насыщенной контентом, а потому места в памяти девайсов занимала немало. Раньше эти цифры колебались в районе 800 МБ, но масштабная переработка графики в ремастере игры, как бы ни хотелось, не смогла бы оставаться в тех же пределах и наверняка бы привела к увеличению размера приложения в несколько раз. Что и случилось в нашем случае: вес клиента достиг 2,3 ГБ — в три раза больше «ванильной» версии. В то же время мы понимали, что HD-пресет потянет далеко не каждый мобильный телефон, а значит — нет смысла заставлять игроков качать ненужные гигабайты и тем самым ломать себе воронку конверсий.

Выход? Базовое качество скачивать по умолчанию и выбирать при первом запуске, а HD-пресет предлагать пользователю позже — и только если устройство его поддерживает. 

Все это подстегнуло нас на активное внедрение такой технологии в нашу игру.

Читать далее

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

Время на прочтение5 мин
Охват и читатели4.7K

В этом посте разбираем полный список SKErrors: что они значат и как их обрабатывать. Каждую ошибку мы рассмотрим в трёх аспектах: как она возникает, что с ней делать и какое сообщение показывать пользователю в уведомлении об ошибке.

Это пятая статья из нашей серии, посвящённой внедрению покупок на iOS. Познакомиться с предыдущими можно по ссылкам:

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

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

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

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

5. iOS in-app purchases часть 5: обработка ошибок SKErrors. - Вы тут.

Читать далее

С помощью скотча и жвачки

Время на прочтение4 мин
Охват и читатели3.8K

Защита приложений от обратной разработки - сложный процесс, который может отнимать много сил и нервов. Статья расскажет о нескольких подходах защиты приложений под операционную систему iOS с использованием разных методов запутывания кода и сокрытия данных.

Читать далее

Как автоматизировать безопасный декодинг массивов в Swift с @propertyWrapper

Время на прочтение7 мин
Охват и читатели3.6K

Привет! На связи Влад, iOS-разработчик из Ozon. Сегодня я поделюсь с вами, возможно, не самым очевидным способом использования propertyWrappers. Обёртки позволяют добавлять дополнительную логику свойствам. В одну из них мы спрятали описание безопасного декодинга массивов, и теперь нам достаточно пометить свойство как @SafeDecode — и всё начинает работает автоматически. О том, как они работают и как их завести у себя, читайте дальше.

Читать далее

Мобильное вещание: советы по работе на примере Larix Broadcaster

Время на прочтение7 мин
Охват и читатели11K

Потоковое вещание с мобильных устройств превратилось из экзотики в надежный рабочий инструмент. В статье мы даём лучшие практики и рекомендации для мобильного вещания на примере нашего приложения Larix Broadcaster.

Читать далее

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

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

Время на прочтение6 мин
Охват и читатели14K

На iOS есть два варианта тестирования: классический, посредством Sandbox покупок, и новый способ локального тестирования покупок через Xcode (StoreKit local testing).

Sandbox тестирование — процесс несколько муторный и работает только на реальном девайсе. Чтобы тестировать в Sandbox, в самом начале надо завести аккаунт тестировщика на портале, связать его со своим устройством и после этого этого проверить все сценарии.

Тестирование в Xсode Во-первых, тестировать покупки в Xcode можно на раннем этапе, когда приложение не подключено к AppStore Connect. Во-вторых, для Xcode не нужно заводить дополнительных аккаунтов в AppStore, что сильно ускоряет процесс конфигурации тестов, особенно для lifetime non-consumable. В-третьих, локальное тестирование можно автоматизировать, что потенциально снижает шанс появления ошибок в коде.

Познакомьтесь с остальными статьями из цикла:

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

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

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

4. iOS in-app purchases часть 4: локальное тестирование покупок в XCode. - Вы тут.

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

Читать далее

AppCode 2021.2: улучшения поддержки Swift, автодополнение выражений, окно иерархии вызовов для Swift и не только

Время на прочтение2 мин
Охват и читатели3K

Привет, Хабр! 

В этом посте, как и всегда, расскажем о новом релизе AppCode. Всем, кому интересно, — добро пожаловать под кат. 

Читать далее

О Core Bluetooth замолвите слово… или что делать с загадочным девайсом, когда задач много, а девелопер один

Время на прочтение12 мин
Охват и читатели2.6K

Начну с себя. Я и есть тот самый iOS девелопер, работающий в компании Orion Innovation, которому посчастливилось разбирать функционал и придумать универсальный инструмент, применимый в разных кейсах. И у меня есть вопросы. Как часто вам приходится работать с реальными устройствами в мире мобильных девайсов? А что, если ваше приложение отличается от типичных клиент-серверных?

На всё про всё – массив байт. В нем заложены команды, и они отправляются на блютуз девайс. Как же нам конвертировать это в неклассическую модель данных, совсем непохожую на привычный Json? Интересно? Мои идеи и работающие решения в этой статье.

А если серьезно, то продолжительное время мой проект занимается разработкой приложения для управления чипом по протоколу BLE. Отдельная группа инженеров работает непосредственно с железом,занимаясь тем, что готовит API для нас. Сам чип управляет различными девайсами в зависимости от того, с какой платой его сконнектить. Инженеры создали свой функционал, а мы…  на стороне клиента должны работать четко по предоставленной ими инструкции.

Читать далее

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

Время на прочтение3 мин
Охват и читатели2.6K
В нашей новой подборке выход из тюрьмы Apple и внедрение своего кода в чужое iOS-приложение, прошлое, настоящее и будущее Kotlin, переобувка за неделю до релиза, принципы замкнутости, боязнь IoT и многое другое!

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

Как за неделю до релиза переобуться и сократить размер билда в 3 раза

Время на прочтение8 мин
Охват и читатели6.7K

Современные AAA-тайтлы уже давно стали весить больше 100 ГБ, а их апдейт еще на 20 ГБ считается обычным делом. Тот же тренд разрастания билда постепенно просачивается в мидкорные и хардкорные мобильные игры. Впрочем, к тому, что уже не удивляет ПК- и консольных юзеров, мобильные геймеры все еще довольно чувствительны.

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

Читать далее

Как тестировщики написали свою мобильную ферму для IOS

Время на прочтение8 мин
Охват и читатели11K

Привет, Хабр! Меня зовут Руслан, я — автотестировщик в QA-агентстве «Кавычки». Из этого можно понять, что мы в агентстве занимаемся только тестированием во всех его проявлениях, а меня зовут Руслан. Отлично, идем дальше. Когда какая-то проблема начинает сильно докучать, то даже тестировщики могут что-то создать (ну или сломать это к черту, чтобы не мешало). Это статья как раз про тот случай, когда наша проблема перешла совместимый с жизнью болевой порог, и нам пришлось решить ее с помощью собственной разработки.

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

Читать далее

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

Время на прочтение13 мин
Охват и читатели12K

Серверная валидация (server-side receipt validation) — это способ проверить подлинность покупки. В отличие от проверки покупки на устройстве, серверная валидация происходит, внимание, на сервере. Валидация означает, что устройство или сервер обращаются к серверам Apple и спрашивают, действительно ли была покупка и валидная ли она.

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

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

3. iOS in-app purchases часть 3: серверная валидация покупок. - Вы тут.

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

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

Читать далее