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

iOS *

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

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

Как отследить состояние сетевого соединения в Swift? Привет, нативная реализация, пока, Reachability

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

Рассмотрим нативное решение для мониторинга сетевого подключения на iOS с помощью Swift 5 и использования Network Link Conditioner.

Читать далее

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

Время на прочтение4 мин
Количество просмотров2.5K
В новом дайджесте гарнитуры смешанной реальности и разработка для встроенных систем на Swift, реакции ВКонтакте и вымышленные языки, Яндекс Go для незрячих, мобильная безопасность, роботы клинической поддержки и многое другое!

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

Производительность встроенных функций высшего порядка в сравнении с циклом for-in в Swift

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

Самые популярные функции высшего порядка - это map, filter и reduce. Мы все используем их, так как думаем, что синтаксис намного лучше, и писать их даже быстрее, чем старый способ for-in loop. Но так ли это на самом деле? Задумывались ли вы когда-нибудь о производительности этих встроенных функций? Они встроенные, поэтому, естественно, они должны быть лучше, не правда ли? Давайте погрузимся в эти функции вместе, чтобы выяснить, так ли это на самом деле.

Спойлер — не всё так однозначно!

[boringssl] Failed to log metrics

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

Наверное, каждый iOS разработчик сталкивался с этой проблемой. Любое приложение, которое делает https запросы, получает в лог эти мистические сообщения от boringssl:

[boringssl] boringssl_metrics_log_metric_block_invoke(151) Failed to log metrics

Проблема неотключаемого мусорного логирования от boringssl мучала нас много лет, но, кажется, я нашёл приемлемое решение.

Читать далее

Обработка Push уведомлений на клиенте при их получении. И немного кода

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

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

При разработке приложения мы столкнулись с проблемой правильной обработки Push (т.н. пушей) уведомлений на стороне клиента.

Ниже расскажу про метод его создания и подключения, сертификаты и возможности для пушей, приведу подробные примеры кода с пояснениями. Также поделюсь некоторыми тонкостями. Например, про логирование информации о получении пуша с применением опции keychain sharing, загрузку картинки в пуш-уведомление и изменение счетчика пушей.

Читать далее

Как студенты Нетологии помогли разработать приложение для хосписа на основе открытого кода

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

«В хосписе» — приложение, которое создали для сотрудников хосписов студенты Нетологии совместно с «Инновационным центром Ай-Теко». Ещё до релиза проект получил премию «Время инноваций 2021» как социальная инновация года на выставке всемирных технологических достижений «Экспо-2020» в Дубае. Эта статья о нашем опыте разработки с нуля для социального проекта — расскажем, почему взялись помочь и какие трудности нас ждали на пути к релизу.

Читать далее

Apple всё ещё следит за вами. Без вашего согласия

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

В текущей версии macOS Monterey, при каждом обновлении системы на системе, содержащей чип M1, такой же как и все новые блестящие/быстрые маки с ARM ("Apple Silicon"), процесс обновления обращается в Apple, чтобы получить специальную подпись загрузки, известную на жаргоне Apple как "билет" (он же ticket).

Это делается абсолютно незашифрованным способом, через стандартный открытый 80 порт HTTP (точно такой же протокол, который запрещен для использования сторонними разработчиками приложений в App Store при передаче приватных данных, таких как уникальные идентификаторы, служащие PII) на хост gs.apple.com.

HTTP-запрос включает неизменяемые аппаратные уникальные идентификаторы (серийные номера чипов, известные как ECID), которые функционируют как суперкуки, и они видны вашей локальной сети, вашему интернет-провайдеру (или гостинице, или кофейне), всем, кто следит за сетевыми магистралями, и, конечно же, самим Apple.

Это позволяет любому определить примерное местоположение устройства, даже если он не находится рядом. Из-за того, что он может видеть IP-адрес клиента (что эквивалентно примерно геолокации на уровне города) и серийный номер устройства.

Любой, кто следит за интернет-магистралями, может увидеть, в каком городе находится каждый серийный номер чипа (ECID), и может увидеть, куда они перемещаются, поскольку эти обновления выпускаются несколько раз в квартал.

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

Читать далее

Работа с Diffable data source и table views с использованием UIKit

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

В этом руководстве мы создадим экран, позволяющий осуществлять одиночный и множественный выбор, используя Diffable data source и table view.

Читать далее

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

Время на прочтение3 мин
Количество просмотров2.9K
В новом дайджесте навигация в iOS и suspend под капотом, фантастические формулы и сон разработчика, новое пришествие Angry Birds, WWDC 22, старые приложения в Google Play и многое другое.

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

Полмегабайта пустоты в каждом файле Apple Music

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

Вы когда-нибудь докупали расширенный объём хранилища для iPod, iPhone или Mac, чтобы иметь больше места для своей цифровой коллекции музыки Apple Music (iTunes)? Возможно, вы заполняли его гигабайтами пустого пространства.

Музыкальные файлы, которые вы покупаете в Apple Music Store (AMS; ранее назывался iTunes Music Store) содержат приблизительно 6% цифрового аналога пустоты. Я говорю не о тишине, а о сплошных блоках пустого пространства, находящихся внутри файлов. Они нужны только для того, чтобы заполнять файлы, делая их на 0,5 МБ больше. Так зачем же Apple делает музыкальные файлы излишне большими? И как вернуть впустую занимаемое пространство?
Читать дальше →

Обзор решений для навигации в iOS

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

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

Читать далее

Автоматизируем iOS-сборку c помощью Jenkins

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

Всем привет! Меня зовут Иван Чечиков, я QA-инженер в МТС Digital, работаю в проекте WASD.TV. В этой статье я расскажу о своем способе автоматизации iOS-сборки в TestFlight через Jenkins. С помощью такого метода можно настроить автоматизацию как локально, так и на удаленной машине. Поможет в этом Jenkins – это простой в использовании CI/CD-инструмент. Я рассмотрю локальное применение Jenkins.

 Подробности – под катом.

Читать далее

Структурированный параллелизм (structured concurrency) в Swift

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

Узнайте, как работать с объектом Task для безопасного выполнения асинхронных операций с использованием новых API параллелизма в Swift.

Читать далее

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

Управляем навигацией в iOS-приложениях. Паттерн координатор от СберМаркета

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

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

Под катом рассказываем, как и зачем мы в команде написали свою реализацию паттерна Coordinator.

Читать далее

50 вопросов и ответов для собеседования по Swift в 2022 году

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

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

Кроме того, не стесняйтесь использовать эти вопросы для собеседования по Swift для тренировки перед экзаменом.

Эти вопросы для собеседования расположены в случайном порядке, а не от простого к сложному.

Читать далее

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

Время на прочтение4 мин
Количество просмотров3K
В нашем новом еженедельном дайджесте внешние аккаунты для iOS-приложений и опыт KMM в QIWI, конец Dagger 2 и соответствующий выбор оффера, теория разбитых окон в разработке, вакансии, рост доходов приложений и многое другое!

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

[iOS] Создаем кастомный лоадер (спиннер или UIActivityIndicator) в UIKit

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

Будем создавать свои спиннеры (аналоги UIActivityIndicator). Сначала разберем на простом примере, суть и подход, а затем попытаемся усложнить и получить реально веселые и крутые примеры!

Что ж, прочту

Шорткаты для Xcode в виде Cheat sheet

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

Вдохновился референсом от Tower и создал русскую версию таблицы с шорткатами для нашей среды разработки.

Читать далее

Справочники в iOS: храним, обновляем, используем

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

Всем привет! Меня зовут Саша, и я iOS-разработчик в hh.ru

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

Читать далее

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

Время на прочтение4 мин
Количество просмотров2.8K
В новом дайджесте визуализация графа билда и OAuth в мобильных приложениях, стартап соло- разработчика и безопасность мобильных приложений, стереотипы тестирования, новый Performance Index, естественный язык и многое другое!

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