Как стать автором
Обновить
65.95

Разработка под iOS *

Популярная мобильная ОС

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

Автоматизация тестирования мобильных приложений. Часть 1: проверки, модули и базовые действия

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

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

Читать далее
Всего голосов 28: ↑26 и ↓2+24
Комментарии1

Как выйти на китайский рынок с mini-app для WeChat, чтобы не прогореть

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

В Китае легко затеряться. Наши первые пиццерии там работали по привычной модели: точка «на доставку» с залом на второй линии не в людном месте. Но модель работала не так как мы хотели, потому что рядом с пиццерией десятки лавок со всеми видами еды, вроде боула с мидиями или хрустальной лапши, где клиент получит еду быстрее. Можно было бы сделать своё приложение с доставкой, но на китайских экранах сотни приложений, где можно заказать еду, и наше бы просто затерялось. Поэтому мы «пошли» в WeChat и его экосистему мини-приложений.

Почти нет примеров когда некитайская продуктовая компания вышла в WeChat с собственной мини-программой, да ещё с in-house разработкой вне Китая. Поэтому мы  познавали все нюансы разработки самостоятельно, от устройства китайской цифровой экосистемы и мини-приложений в WeChat, до вывода продукта на китайский рынок. Об этом и расскажем в этом большом «разборе» китайских приложений.

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии15

Как мы ускоряли работу отладчика Swift

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

Привет! Меня зовут Александр Скворцов, я работаю в команде Яндекс.Браузера для iOS. Это очень большой проект, который насчитывает около тысячи clang-модулей и примерно 600 Swift-модулей. Наверное, из-за таких масштабов мы чаще других наталкиваемся на проблемы инструментов разработки, например, находим критические ошибки в компиляторе, неработающую подсветку и автодополнение. Это бывает неприятно, но жить можно. 

Самая серьёзная проблема возникла с отладкой. В худшем случае с момента запуска до остановки в отладчике на точке входа в приложение проходило больше 20 минут. И это на свежем MacBook Pro 16! С таким «быстродействием» инструментов разработки невозможно эффективно развивать проект, поэтому мы решили разобраться в причинах и поискать возможные решения.

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

Читать далее
Всего голосов 50: ↑49 и ↓1+48
Комментарии13

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

Время на прочтение3 мин
Количество просмотров3.5K
В нашем новом выпуске безопасность iOS-приложений и новинки Android 12, 22 тысячи изменений в дизайне и победа над читерами, история кроссплатформы и Flutter версии 2.0, неэффективные руководители, инди-маркетинг и многое другое!

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Истории

Онбординг. Зачем нужен и как использовать

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


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

Читать далее
Всего голосов 17: ↑13 и ↓4+9
Комментарии1

Безопасность iOS-приложений: гайд для новичков

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

Привет! Меня зовут Гриша, я работаю application security инженером в компании Wrike и отвечаю за безопасность наших мобильных приложений. В этой статье я расскажу про основы безопасности iOS-приложений. Текст будет полезен, если вы только начинаете интересоваться безопасностью мобильных приложений под iOS и хотите разобраться, как все устроено изнутри.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии4

XCResult — как и зачем читать

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


В 2018 году Apple в очередной (третий) раз обновили формат, в котором выдаётся информация о прогоне тестов. Если раньше это был plist файл, который представлял из себя большой xml, то теперь это большой файл с расширением xcresult, который открывается через Xcode и содержит в себе кучу полезной информации, начиная c результатов тестов с логами, скриншотами и заканчивая покрытием таргетов, диагностической информацией о сборке и многим другим. Большинство разработчиков не работает каждый день с этим, но инфраструктурщики в данной статье могут найти что-то полезное.
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Кроссплатформенная мобильная разработка: история вопроса

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

Когда речь заходит о разработке «сразу для Android и iOS», начинаются холивары и гадания на кофейной гуще. Что перспективнее, Flutter или Kotlin Multiplatform? Будущее за ними, или завтра их оба забудут?

Уверенно делать прогнозы — занятие весёлое, но не очень конструктивное. Я захотел подойти иначе. Поскольку мы проводим конференцию Mobius, я общался со многими мобильными разработчиками, в том числе об их опыте использования старых кроссплатформых решений. И теперь решил вспомнить, какими были эти решения, и понять их судьбу.

Как известно, «кто забывает об истории, обречён на её повторение». Если мы разберёмся с прошлым — возможно, тогда и будущее станет нам понятнее. А если вы сами работали с описанными технологиями — можете дополнять в комментариях своим опытом.

Читать далее
Всего голосов 57: ↑51 и ↓6+45
Комментарии43

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

Время на прочтение2 мин
Количество просмотров2.8K
Этот дайджест вышел небольшой, но в нем все равно есть продолжение истории про автотестирование, API сна для Android, подготовка Flutter к null safety и прогноз развития рынка приложений до 2025 года.

Читать дальше →
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Хакаем CAN шину авто. Мобильное приложение вместо панели приборов

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

Я продолжаю изучать CAN шину авто. В предыдущих статьях я голосом открывал окна в машине и собирал виртуальную панель приборов на RPi. Теперь я разрабатываю мобильное приложение VAG Virtual Cockpit, которое должно полностью заменить приборную панель любой модели VW/Audi/Skoda/Seat. Работает оно так: телефон подключается к ELM327 адаптеру по Wi-Fi или Bluetooth и отправляет диагностические запросы в CAN шину, в ответ получает информацию о датчиках.

По ходу разработки мобильного приложения пришлось узнать, что разные электронные блоки управления (двигателя, трансмиссии, приборной панели и др.) подключенные к CAN шине могут использовать разные протоколы для диагностики, а именно UDS и KWP2000 в обертке из VW Transport Protocol 2.0.

Как телефон взаимодействует с автомобилем
Всего голосов 109: ↑109 и ↓0+109
Комментарии123

Как увеличить срок хранения мобильного приложения? 6 проверенных способов

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

Увеличение срока хранения в мобильном приложении - это действие, направленное на возвращение пользователей в приложение. На практике это обычно означает необходимость сосредоточить свои действия на долгосрочных последствиях. Одноразовые рекламные кампании могут привести к кратковременному увеличению трафика приложений, но они не способствуют созданию стабильной базы постоянных клиентов. Вот почему стоит разработать продукт и представить его на рынке таким образом, чтобы он не только привлекал интерес клиентов, но и поддерживал его. Механизмы, описанные ниже, составляют дополнительное целое, которое помогает его развивать.

Читать далее
Всего голосов 14: ↑7 и ↓70
Комментарии24

Погружение в автотестирование на iOS. Часть 3. Жизненный цикл iOS приложения во время прогона тестов

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

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

В этой статье я расскажу про жизненый цикл iOS приложения во время прогона тестов, а в частности про:

- Предусловия и постусловия в ui-тестах;

- Запуск/завершение работы приложения;

- Запуск стороних приложений;

- Сброс permissions;

- Определение состояния приложения.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

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

Время на прочтение3 мин
Количество просмотров3.7K
В этом выпуске цвета Swift, переиспользуемый чистый Kotlin, выход первой версии Android 12 и страсти по IDFA, дефекты Qt и бриллиантовый чекаут, секреты маркетинга приложений, игровые боты, знания за 5 минут и многое другое.

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

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

Готовим Большую Фичу™ на Kotlin Multiplatform. Доклад Яндекса

Время на прочтение15 мин
Количество просмотров6K
Предположим, вы решили внедрить Kotlin Multiplatform в свой проект, чтобы переиспользовать логику на iOS и Android. Рано или поздно вы захотите сделать Большую Фичу, которая будет включать в себя и сложную многопоточную логику, походы в сеть, кэширование. Каждый из этих этапов вы привыкли делать на своей платформе (ведь делали это тысячу раз). Но в мультиплатформе нет привычных библиотек и подходов, зато есть абсолютно новый стек и тысяча новых способов элегантно выстрелить себе в ногу. Яндекс.Карты и Дмитрий Яковлев yakdmt прошли тернистый путь реализации фичи в мультиплатформе.

— Для начала пару слов о себе. Меня зовут Дмитрий Яковлев. Я поработал в нескольких стартапах, в нескольких банках, а сейчас работаю в Яндексе над Android-приложением Карт. При этом еще немного пишу на Kotlin Multiplatform кроссплатформенную логику.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии2

Предотвращаем мерж-конфликты с XcodeGen

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

В этой статье мы рассмотрим решение для мгновенного разрешения мерж-конфликтов в файле .xcodeproj, что является одной из самых трудоемких проблем, с которыми сегодня сталкиваются команды iOS и macOS разработчиков. К концу этой статьи у вас будет рабочая среда, обеспечивающая бесконфликтное слияние.

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии1

ZERG — что за зверь?

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


Когда мы говорим о CI&CD, мы часто углубляемся в базовые инструменты автоматизации сборки, тестирования и доставки приложения — фокусируемся на инструментах, но забываем осветить процессы, которые протекают во время отрезания и стабилизации релизов. Однако, не все готовые инструменты одинаково полезны, а какие-то кастомные процессы не укладываются в их покрытие. Приходится исследовать процессы и находить пути автоматизации для их оптимизации.

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

У нас есть ночные прогоны, когда гоняются полные наборы тестов. Но на самой заре освоения Zephyr, нашим тестировщикам во время регресса приходилось скачивать xcresult, или ещё ранее plist, или junit xml, а затем проставлять соответствия зелёных и красных тестов в зефире руками. Это довольно рутинная операция, да и занимает она много времени, чтобы руками пройти 500-600 тестов. Такие вещи хочется отдать на откуп бездушной машине. Так родился ZERG.

Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Цвета в Swift: UIColor

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

UIColor дает возможность настроить цвет для Dark Mode, дает семантический набор цветов "от Apple", а также дает возможность задать не только цвет, но и паттерн заполнения пространства, что как бы кричит нам, что UIColor это вовсе не цвет. Давайте слегка заглянем в эти чертоги UIColor.

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии6

Распознание блоков текста в IOS-приложении с помощью Vision

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

Работая над приложением, связанным с финансовыми операциями, возникла необходимость распознать и выделить суммы на чеках. Начиная с 11-ой версии в IOS-разработке появился нативный фреймворк Vision, который позволяет распознавать различные объекты на изображениях, без задействования сторонних сервисов.

В данной статье представлен личный опыт разработки приложения, использующего Vision.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Как мы накосячили пока делали Бриллиантовый чекаут™ 9 месяцев, а планировали 2

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

В начале 2019 мы собрали аналитику по адресам в заказах и увидели, что бо́льшая часть клиентов заказывает доставку на одни и те же адреса и не устанавливают отложенное время. Они хотят получить заказ «туда же, куда и в прошлый раз и как можно быстрее». Но сделать это не так просто. Поэтому мы решили поменять флоу оплаты заказа и максимально его упростить именно для таких клиентов. Мы назвали этот проект Бриллиантовый чекаут™ и планировали сделать за 2 месяца. А закончили через 9.

И вот почему
Всего голосов 34: ↑32 и ↓2+30
Комментарии23

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

Время на прочтение3 мин
Количество просмотров3.7K
В новом дайджесте локализация и кастомные плагины, защита прав и неготовность Flutter, документация и тестирование, доходы подписок и легендарный симулятор «Кобаяси Мару». Подключайтесь!

Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии0