Обновить
65.59

iOS *

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

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

Quick, Nimble. На несколько тестов больше

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

Как ни странно, тема автоматизированного тестирования приложений iOS не так уж популярна среди разработчиков. Сложно судить о причинах такого положения дел, но сегодня я постараюсь пролить немного света на эту тему. В этой статье-туториале рассказывается, как лучше начать работать с фреймворком для тестирования Quick и метчером Nimble, как организовать код тестов, чтобы их было легко читать и поддерживать, как избежать дублирования проверок и сделать тесты более выразительными. Если вы хотите начать писать тесты под iOS, но не готовы тратить на их поддержку и написание много времени, — эта статья для вас.

Поехали!

Тренды iOS: на что обратить внимание разработчику

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

Привет, меня зовут Анна Помазанова, я iOS Developer в команде NIX. За девять лет в IT-сфере я убедилась: неважно, начинающий вы iOS Developer или опытный специалист — всегда надо следить за трендами в разработке. Только так можно быть уверенным, что вы сможете качественно улучшать код и оптимизировать его, а сам продукт делать действительно полезным для пользователей.

В этой статье я решила собрать основные направления iOS-разработки и самые популярные фреймворки от Apple. Один нюанс: данные приведены на момент подготовки публикации — в сентябре 2021 года. В любом случае начинающим  iOS-разработчикам этот материал будет полезен.

Читать далее

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

Время на прочтение3 мин
Охват и читатели2.5K
Новый дайджест вышел не очень большой, зато в нем безопасность iPhone и новые MacBook Pro в Android-разработке, чаты на вебсокетах, тестирование на удаленке, основы CI/CD и многое другое!

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

Что ждет мобильных разработчиков на Mobius 2021 Moscow

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

До конференции по мобильной разработке Mobius осталось три недели. А значит, пришло время рассказать, о чем будут доклады: их описания под катом.

Как водится, есть материал и по конкретным платформам (Android/iOS), и «кроссплатформенный». Чтобы вы быстрее находили подходящие вам доклады, в тексте расставлены обозначения:

? — iOS

? — Android

? — Flutter

? — Kotlin (вылезающий за рамки Android)

♾️ — универсальные доклады, не привязанные к платформе

Тематически все тоже очень разнообразно: от многопоточности до автоматизации миграции на Bazel. И в этот раз неожиданно широко раскрыта тема доступности (accessibilty) — вероятно, это говорит о зрелости мобильной разработки.

Смотреть программу

[iOS] Создание фреймворка Framework с использованием Cocoapods

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

Столкнувшись с задачей создать фреймворк, первым делом я, как и полагается, порядочно погуглил. Однако, во всех туториалах, которые я встречал, создавали фреймворк без подов, и конечно было непонятно как работать в данном случае с cocoapods. Как переносить поды, нужно ли их вообще переносить и как в целом правильно сбилдить фреймворк, а затем его внедрить в другой проект.

Читать далее

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

Время на прочтение4 мин
Охват и читатели2.6K
В этой подборке креши на старте и идеальный наблюдатель, новые MacBook Pro в компиляции проектов и эволюция CI, боты в мультиплеере, проблема разлогинов, вопросы удаления функций, фейковые приложения и многое другое!

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

[iOS] Создание статической библиотеки Static Library с использованием Cocoapods

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

В свое время мне понадобилось обернуть написанный модуль в библиотеку. Порядочно погуглив, я нашел кучу туториалов, суть которых - создается библиотека с одним-двумя .swift - файлами. У меня же был целый проект, да еще с подами (а ля Alamofire, Moya, EasyPeasy и др), и создание библиотеки именно этим и усложнялось, было непонятно как переносить поды, нужно ли их вообще переносить и как в целом правильно сбилдить такую библиотеку.

Читать далее

Исповедь iOS-разработчика из Google

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

Я уволился из Google летом 2020. Лицо моего менеджера вытянулось, когда я сказал ему что ухожу - он ожидал чего-то подобного, но не в разгар пандемии! А я был счастлив - как никогда за последние несколько месяцев, и почти так же счастлив как 3 года назад - когда получил письмо с предложением работы в Google.

За эти три года моя любовь к Google сменилась полной апатией и потерей интереса к работе.

Самый лучшими моментами моей работы в Google были...

Читать далее

Гайд по UIKeyboardLayoutGuide

Время на прочтение2 мин
Охват и читатели4.8K
image
Обработка показа клавиатуры – это распространенная задача при создании интерфейса приложения. С выходом iOS 14 это работает автоматически для SwiftUI компонентов. Но что со старым-добрым UIKit? Раньше мы использовали нотификации клавиатуры, проверяли ее высоту и обновляли необходимые constraints. В iOS 15 появился новый гайд — UIKeyboardLayoutGuide. Если вы уже знакомы с такими гайдами, как safeAreaLayoutGuide и readableContentGuide, новый покажется вам супер интуитивным. Давайте попробуем использовать его на простом примере — экране авторизации с текстовыми полями и кнопкой логина, закрепленной внизу.
Читать дальше →

One Day Offer для мобильных разработчиков и системных аналитиков

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

Привет!

Мы продолжаем проводить One Day Offer, в этот раз на очереди мобильные разработчики и системные аналитики.

Предлагаем получить оффер за сутки, без долгого ожидания между интервью. Проведём все этапы собеседования онлайн и в один день на нашем специальном One Day Offer, где можно получить приглашение на работу всего за один день.

Когда?

13 ноября — Android- и iOS-разработчики (подать заявку нужно до 11 ноября).

20 ноября — системные аналитики (заявки — до 19 ноября).

Критерии

Ваш грейд — middle или senior, джунов в этот раз не рассматриваем.

Вы узнаёте себя в описании вакансии у нас на сайте.

Готовы попробовать? Тогда вот ваша ссылка.

До встречи в Альфа-Банке!

Читать далее

Как мы боролись с проблемой разлогинов в приложении «Магнита» и возвращали пользователей обратно

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

Всем привет! Меня зовут Антон Огородников, и с начала этого года я руковожу отделом онлайн-разработки в «Магните». Не успел я заонбордиться, как столкнулся с  настоящим коллапсом — массовым лог-аутом пользователей из приложения лояльности «Магнит: акции и скидки». Клиентов разлогинивало в самые неподходящие моменты: например, на кассе во время оплаты товаров. Оценка приложения в сторах упала до 2 баллов, капали негативные комментарии.

В этой статье я расскажу, как мы искали причину и как сумели побороть проблему. 

Решить проблему разлогинов

Кто крешит приложение на старте?

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

Привет! Меня зовут Александр Денисов, я из команды мобильного Яндекс.Браузера в Санкт-Петербурге. В этом посте расскажу вам, как мы справляемся с циклическими крешами на старте.


Каждый разработчик знает, насколько важна для пользователя надёжность продукта. В работе над стабильностью приложения могут помочь выстроенные процессы разработки и тестирования, продвинутые средства диагностики. Однако всё предусмотреть невозможно, особенно если ваш проект большой и сложный. И рано или поздно вы, скорее всего, столкнётесь с проблемой циклического креша на старте. Сейчас разберёмся, как можно обработать этот сценарий.


В качестве примера будет выступать приложение Яндекс.Браузер для iOS: более 100 тысяч исходных файлов, тысячи коммитов в год и около тысячи модулей без учёта ядра (Swift + Objective-C). Кстати, не так давно мы рассказывали, как помогли команде Swift ускорить отладчик.


Циклический креш на старте


Представьте, что в вашем приложении есть баг, приводящий к крешу. Несложно, правда? Причём возникает баг из-за редкого сочетания факторов, и происходит это на старте. С некоторой вероятностью баг останется незамеченным во время тестирования и попадёт в версию для App Store. А дальше пострадавшие пользователи столкнутся с приложением, которое крешится прямо на старте, и перезапуск уже не помогает — только переустановка.

Как бороться

Идеальный наблюдатель на Swift

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

В этой статье речь пойдёт о шаблоне проектирования «Наблюдатель» (Observer) и его реализации на Swift. Точнее — о его идеальной реализации.

Читать далее

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

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

Время на прочтение4 мин
Охват и читатели2.5K
В нашем новом дайджесте последствия App Tracking Transparency и борьба с зависимостями, новые MacBook Pro и летающая пицца, идеальный код, оффбординг, траты жителей разных стран на приложения и многое другое!

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

Определение App flavors для приложений Flutter

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

Этот пост будет полезен для Flutter-разработчиков, которым хочется поработать с флейворами (flavours), изменить и дополнить их. Сегодня мы не будем говорить о процессе создания флейворов с разными иконками, названиями и идентификаторами, благо таких публикаций существует уже очень много. Вместо этого речь пойдет о том, как определять флейвор в Dart-коде, а также о решении некоторых часто встречающихся при сборке приложений проблем, связанных с введением флейворов. 

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

Читать далее

Борьба с зависимостями: как мы переводили проект на SwiftPM (и сделали еще хуже, чем было)

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

Привет, Хабр! Меня зовут Лена, я iOS-разработчик в inDriver. Расскажу о том, как мы выбирали менеджер зависимостей для проекта. Название статьи звучит пессимистично, но на самом деле, все оказалось не так плохо.

Сначала поделюсь тем, как у нас обстояли дела с интеграцией сторонних решений. Затем выделю проблемы и цели, которые перед нами стояли, и перейду к сравнению менеджеров зависимостей. Расскажу, почему остановили свой выбор на Swift Package Manager (SwiftPM) и как на него переезжали.

Погнали!

Читать далее

App Tracking Transparency: что изменилось с новой политикой приватности от Apple

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

Apple в прошлом году заставила понервничать весь мобильный рекламный рынок, анонсировав для App Store новую политику приватности данных. Теперь создатели приложений обязаны спрашивать разрешение пользователей на рекламный трекинг (да-да, тот самый нашумевший IDFA). Правила, которые несколько раз откладывали, вступили в силу в начале этого года. 

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

Читать далее

Обработка жестов в iOS

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

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

Читать далее

Apple Event Unleashed — текстовая трансляция

Время на прочтение4 мин
Охват и читатели12K
До хэллоуина еще вроде бы порядочно, но количество тыкв увеличивается каждую секунду. В них превращаются многочисленные макбуки, причем не только на процессорах с архитектурой x86, но и еще недавно свежие и быстрые модели на Apple M1.

Прошлогодние Macbook и Mac mini оказались просто на удивление удачными. Apple удалось обеспечить на 99% бесшовный переход между платформами. Я сам из любопытства купил Mac mini с M1, надеясь поймать много веселых багов и написать про них. Но вместо этого получил рабочую машинку, которая кодирует видео в пять (!) раз быстрее по сравнению с предыдущим поколением, а потребляет энергии в три раза меньше.

Но были и ограничения. В первую очередь удивлял максимальный объем памяти 16 Гбайт, что для серьезной работы, конечно, негусто. Портов совсем мало. Ну и ядер бы побольше да побыстрее.

Давайте посмотрим, что нам покажет дедушка Тим. Он уже зовет.

image

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

Опыт внедрения многомодульности в (еще) не разросшееся приложение (Часть 1)

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

Опыт внедрения многомодульности в (еще) не разросшееся приложение (часть 1).

Читать далее