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

iOS *

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

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

WidgetKit в iOS — не просто большие иконки

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3.3K

Меня зовут Даша, я iOS-разработчик в Surf. Сегодня я освежу в вашей памяти философию и design виджетов. Подсвечу технические аспекты, которые помогут, если вы собираетесь делать свой первый виджет или хотите вдохнуть жизнь в старый. А ещё затрону несколько неочевидных, но важных тем.

Читать далее

Как показать номер версии на экране загру…

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.7K

Привет, Хабр! Меня зовут Сергей, и я 3 года работаю Android/iOS разработчиком. Написал с нуля приложение для фитнес-клубов (Google Play/App Store — если интересно, код под NDA, его не могу показать) и дорабатываю малоизвестный банк. За это время накопилось много интересных решений, которые выросли из доморощенных «Франкенштейнов» и теперь переношу из проекта в проект. В своих статьях расскажу о них. Кроме того, мне всегда интересно сравнивать подход в iOS и Android в аналогичных вопросах. Надеюсь, мои статьи помогут тем, кто хочет перейти с одной платформы на другую.

Любое приложение начинается с загрузки. И как оказалось, экран загрузки совсем не так прост, как кажется. То, что мы там видим — картинку, версию приложения и прочее — совсем не стандартные решения. Поэтому я решил первую статью написать именно об этом. Итак, начнём.

Читать далее

4 сценария, когда нужно сделать ставку на Kotlin Multiplatform, а не Flutter

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров9.4K

Привет, это Максим Мялкин — управляющий партнёр и руководитель мобильной разработки KTS.

Кроссплатформенные- инструменты помогают бизнесу не писать код два раза под iOS и Android, а переиспользовать его на обеих платформах. В статье — о том, чем Kotlin Multiplatform отличается от Flutter и в каких случаях он переигрывает и уничтожает Flutter. 

Читать далее

LLaMA 2, RWKV, Santacoder и другие LLM на iOS

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров9.1K

Однажды я решил изучить язык Swift и разработать свое первое приложение для iOS. Для этого я решил создать реальный проект, который заключался в оптимизации нашумевшего LLaMA.cpp под iOS. Я поставил перед собой задачу обеспечить запуск 3B и 7B моделей на iPhone 12 Pro с приемлемой скоростью. Под «приемлемой» скоростью я имею в виду такую, чтобы пользователь не успевал заскучать, читая предсказанный текст, пока генерируется новая часть. Что из этого получилось (и какие трудности были при реализации) читайте в статье.

Читать далее

Мобильная разработка за неделю #509 (02 — 08 октября)

Время на прочтение5 мин
Количество просмотров2.2K
В новой подборке фреймворк Observation в Swift и быстрый и безопасный DI на Kotlin, побочные эффекты Jetpack Compose и написание UX-текстов, генератор межъязыковых мостов, самые скачиваемые и зарабатывающие приложения в России и многое другое.

Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений

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

Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений

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

Читать далее

Сервисы: строим масштабируемые и гибкие приложения с помощью чистой архитектуры

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5.5K

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

Изменение API вы можете встретить в разных кейсах. От изменение протоколов взаимодействия с сетью до изменения нативных API биометрией.

Узнай как сделать приложение масштабируемым и не наступать на грабли!

Читай и не наступай на грабли ?

Мобильная разработка за неделю #508 (25 сентября — 1 октября)

Время на прочтение5 мин
Количество просмотров3.6K
В нашем новом дайджесте внедрение SwiftUI в Airbnb, диск на шейдерах и победа фрагментации, невидимые проблемы, советы к собеседованию, $20 млрд на конфетки, приложение с фотопленкой и многое другое!

Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

Два по цене одного: snapshot-тесты на основе SwiftUI Preview

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.2K

Привет, Хабр! Меня зовут Дима, я iOS-разработчик в компании Doubletapp, и в прошлом году я вместе со своими коллегами и командой Яндекса участвовал в разработке приложения Яндекс Путешествия. В этом проекте мы выбрали фреймворком пользовательского интерфейса SwiftUI (подробнее о том, как мы его выбрали и что из этого получилось, рассказала наша iOS-Head Полина Скалкина здесь).

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

Что такое snapshot-тесты?
Объединение snapshot-тестов и превью
Итог

Читать далее

jenv — удобный инструмент для управления версиями Java

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.7K

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

Читать далее

Vivaldi вгрызается в яблоко: Представляем Vivaldi для iOS

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.4K

Дождались! Вышел Vivaldi для iOS.

Мы в Vivaldi считаем, что браузер должен подстраиваться под вас, а не наоборот. Теперь мы переносим эту философию на ваш iPhone и iPad.

Являетесь вы обычным или опытным пользователем, вы получаете гибкость и универсальность просмотра веб-страниц по своему усмотрению благодаря мощным функциям Vivaldi и уникальному уровню персонализации.

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

Читать далее

Дебаггинг приложения без Xcode. Зачем?

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров6.2K

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

Привет, меня зовут Владимир Петров, я iOS разработчик в Альфа-Банке. Я вам расскажу как мы сделали свой дебаг-инструмент и научились дебажить наше приложение без Xcode. Обратите внимание на статью, если думали над тем, чтобы делать свое решение или готовое — расскажу, какая там может быть функциональность.

Читать далее

Универсальные датасорсы в iOS-разработке

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров4.4K

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

Универсальные датасорсы предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных. Они обеспечивают абстракцию, которая дает разработчикам возможность работать с данными в коллекциях независимо от их происхождения или формата хранения. Это позволяет легко изменять источник данных, добавлять новые функции и поддерживать разные типы данных в приложении.

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

Читать далее

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

Учимся генерировать код из OpenAPI, делать автоверсионирование, разрабатывать мобильные SDK и растить команду без ошибок

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров3.1K

Всем привет от команды ЮMoney!

Делимся докладами с нашего недавнего митапа Red Hot Chili Apples для iOS-разработчиков.

Кому рекомендуем посмотреть:

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

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

Тем, кто разрабатывает мобильные SDK и ищет пошаговую инструкцию, что нужно сделать в первую очередь, чтобы ускорить интеграцию и разгрузить техподдержку.

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

Смотреть доклады

CD-диск на шейдерах и NameDrop в iOS 17

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.7K

Шейдеры отлично подходят для симуляции материалов. В обычных интерфейсах мы управляем только цветом, но эффект размытия в iOS — пример материала, который совершил революцию в мобильных интерфейсах.

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

Читать далее

Мобильная разработка за неделю #507 (18 — 24 сентября)

Время на прочтение4 мин
Количество просмотров1.9K
В этом выпуске миграция на Observation и Doom на SwiftUI, современный Compose и прощание с друзьями, принципы хорошего дизайна, красоты кода, эффективного продвижения и многого другого!

Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

Mobile MVP — minimum viable Features

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.7K

MVP - говоря простым языком, это продукт, который готов к выходу на рынок с минимальной функциональностью чтобы достичь определенных целей. Это может быть и маркетинг, и привлечение новых клиентов, и обкатывание собственных PoC. Цели могут быть разными. Я опущу этот момент, потому что набор фичей, о которых пойдет речь дальше, закрывает 90 процентов потребностей всех целей и дает возможность на маневр. Это очень важно сделать в самом начале, чтобы не забуксовать в фазе активной разработки, дать возможность проверять свои гипотезы и не тормозить бизнес в зарабатывании денег.

Читать далее

Jailbreak checker — как обезопасить свое iOS-приложение

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров6.3K

Привет! Меня зовут Тоня, я продуктовый разработчик в продукте QIWI Кошелек. Недавно мы делали задачу по предотвращению рисков в связи с использованием приложения с Jailbreak. Хочу рассказать о трудностях, с которыми столкнулись на пути, и о том, как мы их разрешили.

Кто такой этот ваш Jailbreak?

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

Дословно jailbreak переводится как «побег из тюрьмы» или «взлом». Данный термин, как правило, используется в отношении iOS. Простыми словами — это использование уязвимостей устройства для получения полного доступа к операционной системе. Из-за такого полного доступа к системе появляется и доступ до keychain, который становится уже не таким защищенным. После взлома у пользователя появляется доступ к альтернативным сторам, из которых можно скачать приложения, не проходившие ревью в App Store. Одним из самых популярных таких альтернативных сторов является Cydia, который чаще всего сразу же устанавливается в момент взлома устройства. 

Зачем его отслеживать?

Читать далее

Руководство по Использованию Многопоточности в Swift

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

Многопоточность в Swift играет критически важную роль в создании отзывчивых и эффективных приложений. В этой статье мы рассмотрим, когда и как использовать новые возможности многопоточности в Swift, включая async/await, Task и структурированную многопоточность.

Читать далее

ASO.dev — как я снова продукт для Apple делал

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.4K

У каждого свой жизненный путь и выбор продуктов, у меня видимо какой-то фетиш делать продукты для Apple и их API... Вот уже 4-ый год как я делаю плеер для Apple Music, а 20 ноября 2022 года вместе с женой придумали и начали делать ASO.dev.

Читать далее