Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.86K subscribers
1.45K photos
68 videos
52 files
4.2K links
Все самое полезное для мобильного разработчика в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
🎁 Топ вакансий для мобильных разработчиков за неделю

Senior Flutter разработчик — 215 000 ₽, удалёнка

iOS Developer (Сообщества) — от 250 000 ₽, удалёнка

Flutter Developer — от 200 000 ₽, офис (Москва)

Старший iOS-разработчик — от 300 000 до‍ 540 000 ₽, гибрид (Москва)

Flutter-developer — от 300 000 до 540 000 ₽, удалёнка

➡️ Еще больше топовых вакансий — в нашем канале Mobile jobs

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🎁 pod install --repo-update – надежный способ избежать "кэш-проблем" с CocoaPods

Эта команда гарантирует, что перед установкой:

• Локальный репозиторий CocoaPods синхронизируется с удаленным
• Вы получаете актуальные версии всех зависимостей
• Исключаются проблемы с устаревшим кэшем

⚠️ Важно знать:

Для экономии времени в CI можно использовать pod install --repo-update --verbose (лог поможет отладить проблемы)

Альтернатива для "чистого" старта:

rm -rf ~/.cocoapods/repos && pod setup


Лайфхак: Добавьте в ваш Fastfile:

lane :setup_pods do
sh "pod install --repo-update"
end


А вы часто сталкиваетесь с проблемами CocoaPods? Делитесь в комментариях своими способами решения 💬

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Последний шанс залутать курсы Proglib Academy с выгодой 40% и пожизненным доступом.

До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.

Выбираем и забираем 👈

P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
🌛 Как сделать ваше веб-приложение доступным в офлайн-режиме

В этом материале автор разберёт, как работают PWA и WebView в офлайн-режиме, посмотрит на инструменты, которые помогают реализовать такую функциональность, и в завершении поделиться примером: какую технологию он выбрал для календаря и как внедрил офлайн-режим на практике.

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

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥2
🔔 Настройка push-уведомлений в мобильных приложениях

👾 Firebase Cloud Messaging (Android)

1. Добавьте зависимости:

implementation 'com.google.firebase:firebase-messaging:23.1.0'


2. Регистрация токена:

FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (task.isSuccessful) {
val token = task.result
// Отправьте токен на ваш сервер
}
}


3. Обработка входящих сообщений:

class MyFirebaseService : FirebaseMessagingService() {
override fun onMessageReceived(message: RemoteMessage) {
// Создайте и отобразите уведомление
}
}


👨‍💻 Apple Push Notification Service (iOS)

1. Настройка в Xcode:

• Включите Push Notifications в Capabilities
• Зарегистрируйте сертификаты в Developer Center

2. Запрос разрешений:

UNUserNotificationCenter.current().requestAuthorization(
options: [.alert, .sound, .badge]) { granted, error in
if granted {
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
}
}


3. Обработка токена устройства:

func application(_ application: UIApplication, 
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let token = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
// Отправьте токен на сервер
}


🚀 Продвинутые функции

1. Группировка уведомлений (Android):

NotificationCompat.Builder(context, CHANNEL_ID)
.setGroup("news_group")
.setGroupSummary(true)


2. Действия в уведомлениях (iOS):

let action = UNNotificationAction(
identifier: "replyAction",
title: "Ответить",
options: [.foreground])


3. Глубокая навигация:

val pendingIntent = NavDeepLinkBuilder(context)
.setGraph(R.navigation.main_nav)
.setDestination(R.id.detailsFragment)
.createPendingIntent()


Какие лучшие практики по push-уведомлениям используете вы? Делитесь в комментариях 💬

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2🥱2
✏️ Чек-лист: полный контроль качества

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

✔️ Основные проверки

Тестирование на 5+ реальных устройствах (включая старые модели)
Проверка работы приложения при плохом интернет-соединении
Анализ потребления батареи в фоне
Тестирование на "ломанных" прошивках (для Android)

✔️ Технический аудит

Проверка крэш-репортов (Firebase/Sentry)
Оптимизация размера APK/IPA (<100MB для Google Play, <200MB для App Store)
Проверка скорости загрузки контента (Lottie-анимации, тяжелые изображения)
Тестирование deep links и универсальных ссылок

✔️ UI/UX валидация

Соответствие гайдлайнам Material Design/Human Interface
Проверка адаптивности на экранах от 4.7" до 7.9"
Тестирование темной/светлой темы
Валидация тач-зоны всех интерактивных элементов

✔️ Процесс публикации

Подготовка release notes на 3+ языках
Проверка возрастного рейтинга и контент-фильтров
Включение всех необходимых разрешений в манифест
План отката на предыдущую версию

Какие важные пункты мы забыли? Пишите в комментариях 💬

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1
🏦 Интеграция платежных систем на уровне банковской инфраструктуры

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

➡️ Подробнее в статье

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Docker vs Server

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

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

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

Что предпочитаете вы? Голосуйте и пишите своё мнение в комментариях 💬

❤️ — Docker
👍 
традиционные серверы
🤝 гибрид

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🥱1🤝1
Когда нужно использовать crossinline, а когда noinline в Kotlin

Модификаторы crossinline и noinline используются для управления поведением лямбда-выражений, переданных в качестве параметров функций. Они позволяют указывать, может ли лямбда-выражение содержать операторы return.

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

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

ВЫВОД: crossinline должен использоваться только тогда, когда вы уверены в том, что оператор return не будет использоваться внутри лямбда-выражения. Если лямбда-выражение должно содержать оператор return, то следует использовать ключевое слово noinline вместо crossinline.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51