Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.28K subscribers
1.99K photos
95 videos
54 files
4.92K links
Все самое полезное для мобильного разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
🦢 WWDC26

Ежегодная конференция WWDC от Apple в 2026 году пройдёт с 8 по 12 июня. Мероприятие откроет традиционная презентация новинок, а следом пользователей ждёт серия более детальных докладов о новинках.

Apple уже начала рассылать приглашения журналистам, а слоганом WWDC стала фраза Coming bright up («На подходе что-то яркое»). Ожидается, что компания в первую очередь представит обновления набора своих ОС: iOS 27, iPadOS 27, watchOS 27, macOS 27, tvOS 27 и visionOS 27. Кроме того, в пресс-релизе Apple упоминает новые инструменты на базе нейросетей.

Кроме основной программы в офисе Apple пройдут очные встречи для разработчиков, дизайнеров, студентов и финалистов конкурсов, включая Swift Student Challenge и Apple Design Awards.

Трансляция WWDC будет доступна на сайте компании, на портале Apple Developer, в фирменном приложении и на YouTube-канале для разработчиков.

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#свежак #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
1
📊 Работа с графами и диаграммами в мобильном приложении

Хотите наглядно показывать статистику и аналитику в вашем приложении? Этот промпт поможет внедрить красивые и интерактивные графики.

📝 Промпт:

Implement charts and data visualization for a mobile app that includes:
— Set up charting library (MPAndroidChart, Charts for iOS)
— Implement line charts for trends over time
— Add bar charts for comparisons
— Create pie/donut charts for distribution
— Implement real-time data updates with animations
— Add zoom and pan interactions
— Handle large datasets with performance optimization


💡 Расширения:

— Добавьте Implement combined charts (line + bar) для сложной аналитики
— Добавьте Add gesture-driven tooltips and data point selection для интерактива
— Добавьте Implement candlestick charts for financial apps для трейдинга

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#буст #JuniorKit
Please open Telegram to view this post
VIEW IN TELEGRAM
Критический успех 🎲

4 июня Альфа-Банк собирает мобильных разработчиков на Alfa Mobile D&D party — в атмосфере любимых фэнтези и настольных ролевых игр. Впереди приключение для истинных авантюристов: объединяйтесь в отряды и открывайте секреты башни.

Друиды поделятся мудростью:
⚡️ С техническим лидером Android-разработки Виталием Перятиным обсудим, что на самом деле под капотом у MCP. Спойлер: всё просто

⚔️ С ведущим iOS-разработчиком Петросом Тепояном погрузимся в мир ИИ-разработки и приключений, или Туда и обратно

Завершим игру вечеринкой. Советуем подумать над образом своего персонажа: за 3 лучших подарим подарки!

🏰 Где: в секретном баре в Москве. Локацию пришлём с соколом в письме.

Регистрируйтесь на приключение!

Реклама. АО «Альфа-Банк», ИНН 7728168971. Erid 2VtzqxAs15z
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1🤩1
📌 Зачем дата-сайентисту матанализ?

Основная компетенция специалиста по Data Science – способность анализировать и интерпретировать данные, а математика является фундаментом для начала работы.

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

Хотите подготовиться к офферу или подтянуть знания? Оставляйте заявку на наш курс по математике для Data Science 💙

P.S. Только до 31 мая на курс (и вообще на все программы Академии) действует СКИДКА 40%

А как у вас дела с высшей математикой?
❤️ — Помню всё
🔥 — Знаю основы
🌚 — Ничего не знаю

🏃‍♀️ Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Flutter 3.44

Команда Flutter представила версию 3.44, которая включает ряд значительных обновлений. Среди ключевых изменений — Hybrid Composition++ для Android, переход на Swift Package Manager в качестве стандартного менеджера пакетов для iOS/macOS и улучшенная поддержка Vulkan для Impeller.

Также представлена предварительная версия поддержки многооконного режима для настольных платформ. Canonical становится ведущим разработчиком проекта.

В рамках масштабной архитектурной эволюции Material и Cupertino отделяются от основного фреймворка. Внедряются новые подходы к UX для агентного взаимодействия с пользователями (GenUI) и инструменты для разработчиков: Agentic Hot Reload, Dart & Flutter Agent Skills.

Flutter 3.44 уже используется в мультимедийной системе Toyota RAV4 2026, а также готовится SDK для webOS от LG.

👉 Читать статью

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#свежак #Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
🎙 Кто главный в твоей «мобильной ленте»

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

Скидывайте в комменты авторов с YouTube, Теlegram, Хабр 💬

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🗓 Новости недели

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

🔵 Swift Plugins: ускоряем сборку проекта

Автор подробно разбирает, что такое Swift Plugins и какие они бывают.

🔵 Android CLI теперь стабилен

Google добавил новые навыки и открыла AI-агентам доступ к мощным возможностям Android Studio, чтобы агенты могли эффективнее помогать в разработке приложений.

🔵 Dart 3.12 — что нового в Dart?

В этом году на конференции Google I/O 2026 команды Flutter и Dart отмечают важную тему: «Везде, каждый день, создано всеми, для всех».

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Конструкция switch в Swift

Конструкция switch/case похожа на конструкцию if/else, так как позволяет обработать сразу несколько условий:

var num: Int = 22
 
switch num {
case 0:
    print("Переменная равна 0")
case 10:
    print("Переменная равна 10")
case 22:
    print("Переменная равна 22")
default:
    print("не удалось распознать число")
}


После ключевого слова switch идет сравниваемое выражение. Это может быть переменная или константа. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора сase. И если совпадение будет найдено, то будет выполняться определенный блок сase.

Если совпадение не будет найдено, то выполняется оператор default.

В данном случае так как переменная num равна 22, будет выполняться следующий блок case:

case 22:
    print("Переменная равна 22")


В других языках программирования, в которых также есть конструкция switch/case, обычно в конце блока case ставится оператор break для прерывания выполнения и выхода из блока switch/case. В Swift использовать оператор break в подобных случаях необязательно.

Однако бывают случаи, когда мы не хотим обрабатывать какие-то определенные значения и просто хотим выйти из конструкции switch. В этом случае после оператора case или default можно указать оператор break:

var num: Int = 0
 
switch num {
case 0:
    print("Переменная равна 0")
case 10:
    break
case 22:
    print("Переменная равна 22")
default:
    break
}


В данном случае если num равно 10 или другому числу, отличному от 0 или 22, просто произойдет выход из switch.

С помощью знака подчеркивания _ можно задать соответствие всем остальным значениям:

let number = 5
switch number {
case 1:
    print("Number = 1")
case 2:
    print("Number = 2")
case _:
    print("Number не равно ни 1, ни 2, но это не точно")
}


Также мы можем сравнивать выражение не с одним значением, а с группой значений:

var num: Int = 20
 
switch num {
case 0, 10:     // если num равно 0 или 10
    print("Переменная равна 0 или 10")
case 11..<20:    // если num в диапазоне от 11 до 20, не включая 20
    print("Переменная находится в диапазоне от 11 до 20")
case 20...30:   // если num в диапазоне от 20 до 30
    print("Переменная находится в диапазоне от 20 до 30")
default:
    print("не удалось распознать число")
}


Оператор case 0, 10 задает два сравниваемых значения 0 и 10 и срабатывает, если выражение равно одному из этих значений.

Оператор case 11..<20 определяет целый диапазон значений от 11 до 20 (не включая 20) и срабатывает, если выражение равно значению из этого диапазона.

Оператор case 20...30 определяет целый диапазон значений от 20 до 30 (включая оба числа) и срабатывает, если выражение равно значению из этого диапазона.

В версии Swift 4 мы можем опускать одну границу диапазона:

let i = 8
switch i {
case ...<0:
    print("i - отрицательное число")
case 1...:
    print("i - положительное число")
case 0:
    print("i равно 0")
default:break
}


📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#буст #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
До 31 мая можно забрать любой курс Proglib Academy со скидкой 40%

Если давно хотели прокачаться в Python, ML, алгоритмах или AI-агентах, сейчас самое время выбрать программу и начать обучение по сниженной цене.

🎁 Разработка AI-агентов от 49.000 ₽ (вместо 69.000 ₽)

Практический курс по разработке AI-агентов для автоматизации задач, работы и собственных проектов

🎁 Курс AgentOps129.000 ₽ (вместо 149.000 ₽)

Для разработчиков и LLM-инженеров, которые хотят внедрять AI-логику в бэкенд и сохранять стабильность сервиса.

🎁 Математика для разработки AI-моделей 23.990 ₽ (вместо 31.990 ₽)

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

🎁 Математика для Data Scienceот 29.990 ₽ (вместо 39.990 ₽)

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

🎁 ML для старта в Data Science28.990 ₽ (вместо 38.990 ₽)

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

🎁 Основы IT для непрограммистов16.990 ₽ (вместо 28.990 ₽)

Курс для IT-рекрутеров, маркетологов, проджектов, продактов и всех, кто работает с IT, но не пишет код.

🎁 Архитектуры и шаблоны проектирования27.990 ₽ (вместо 37.900 ₽)

Освоите основные паттерны проектирования и прокачаете навыки архитектора программного обеспечения.

🎁 Специалист по ИИ89.000 ₽ (вместо 113.900 ₽)

Курс для тех, кто хочет получить профессию в сфере ИИ, собрать портфолио из 5 проектов и научиться разрабатывать сложных AI-агентов.

🎁 Алгоритмы и структуры данных 33.990 ₽ (вместо 57.990 ₽)

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

🎁 Программирование на языке Python27.990 ₽ (вместо 47.390 ₽)

Освоите Python на практике: без сухой теории, с пошаговой прокачкой навыков и итоговым проектом в портфолио.

🙌 Выбирайте курс по ссылке, оставляйте заявку, и менеджер поможет подобрать программу под ваши цели — https://clc.to/OdsnEQ
🔍 Работа с связкой ключей в iOS

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

Для такого типа данных хранение значений в обычных файлах или UserDefaults обычно не подходит. Вместо этого в iOS предусмотрен API Keychain Services, который хранит конфиденциальные данные в зашифрованной базе данных, управляемой системой.

В этом посте мы рассмотрим, как работает API Keychain и как сохранять элементы связки ключей в Swift.

🔹 Примечание о структуре API

API Keychain Services — это API на основе языка C, из-за чего он кажется менее современным по сравнению со многими API на Swift.

На практике многие приложения оборачивают API в небольшую абстракцию на Swift или используют стороннюю библиотеку для упрощения стандартных операций.

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

🔹 Понимание запросов к связке ключей

API сервисов связки ключей основано на запросах.

Запрос к связке ключей представляет собой словарь пар «ключ-значение», который описывает:

🔵 тип элемента, с которым мы хотим работать
🔵 способ идентификации элемента
🔵 дополнительные параметры конфигурации или доступа
🔵сами данные

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

🔹 Сохранение элементов связки ключей

Например, чтобы сохранить пароль в связке ключей, мы сначала создаем запрос, описывающий элемент, который хотим сохранить:

let query: [CFString: Any] = [
kSecClass: kSecClassGenericPassword,
kSecAttrService: "com.app.service",
kSecAttrAccount: username,
kSecValueData: passwordData]


Давайте разберем это по частям.

1️⃣ Определение типа элемента kSecClass:
kSecClassGenericPassword


kSecClass определяет тип элемента связки ключей, который мы хотим сохранить. В этом случае для хранения пароля мы используем kSecClassGenericPassword. Среди других доступных типов:

🔵 kSecClassInternetPassword для хранения интернет-паролей.
🔵 kSecClassCertificate для хранения сертификатов.
🔵 kSecClassKey для хранения криптографических ключей.
🔵 kSecClassIdentity для хранения идентификационных данных.

Тип элемента определяет, какие атрибуты доступны для запроса.

2️⃣ Определение пространства имен kSecAttrService: "com.app.service"

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

3️⃣ Определение атрибутов элемента kSecAttrAccount: username

Атрибуты используются для идентификации элемента и предоставления дополнительных метаданных.

В этом примере kSecAttrAccount хранит имя пользователя, связанное с паролем.

Мы можем дополнительно указать дополнительные аргументы запроса, чтобы настроить поведение элемента связки ключей. Например, kSecAttrAccessible: kSecAttrAccessibleWhenUnlocked, который определяет, когда можно получить доступ к элементу. kSecAttrAccessibleWhenUnlocked гарантирует, что элемент будет доступен только при разблокированном устройстве.

4️⃣ Предоставление конфиденциальных данных kSecValueData: passwordData

Само конфиденциальное значение сохраняется с помощью kSecValueData
Значение должно быть указано как Data.

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#АрхитектурныйКод #MiddlePath #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM