Библиотека мобильного разработчика | 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
📱 How to: оптимизировать работу с API в мобильных приложениях

Проблема: Долгая загрузка данных, лишние запросы и падение приложения при плохом интернете.

1️⃣ Кеширование данных

Используйте Room (Android) или CoreData (iOS) для локального хранения:

// Android + Kotlin  
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getUsers(): Flow<List<User>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun saveUsers(users: List<User>)
}

// iOS + Swift  
func saveUsers(_ users: [User]) {
let context = persistentContainer.viewContext
users.forEach { user in
let entity = UserEntity(context: context)
entity.id = user.id
entity.name = user.name
}
try? context.save()
}


2️⃣ Пагинация

Делите данные на страницы:

🔵 Android: Paging 3 + RemoteMediator
🔵 iOS: UICollectionViewDiffableDataSource + async/await

3️⃣ Повтор запросов при ошибках

// iOS  
func fetchWithRetry(maxAttempts: Int = 3) async throws -> Data {
for attempt in 1...maxAttempts {
do {
return try await fetchData()
} catch {
if attempt == maxAttempts { throw error }
try await Task.sleep(nanoseconds: 1_000_000_000 * UInt64(attempt))
}
}
fatalError("Unreachable")
}


4️⃣ Оптимизация JSON

🔵 Используйте kotlinx.serialization (Android) и Codable (iOS)
🔵 Исключайте ненужные поля через @Transient / @Ignore

5️⃣ HTTP-кеширование

// Android + OkHttp  
val client = OkHttpClient.Builder()
.cache(Cache(cacheDir, 10 * 1024 * 1024)) // 10 MB
.build()


💬 Как вы оптимизируете работу в своих проектах? Делитесь опытом

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
⚙️ Промпт дня: настройка Firebase для мобильных приложений

Запутались в настройке Firebase для Android/iOS? Используйте этот промпт, чтобы быстро разобраться с типовыми задачами и избежать распространённых ошибок:

📝 Промпт:

Provide a step-by-step guide for setting up Firebase in a mobile
1. Initial setup for Android/iOS
2. Typical configuration mistakes and how to avoid them
3. Best practices for structuring Firestore/Firebase Auth
4. Performance optimization tips


📌 Дополнительные варианты:

Suggest solutions for common Firebase authentication errors (если столкнулись с проблемами логина)
Compare Realtime Database vs Firestore for a chat app (если выбираете базу данных)
Provide code samples for offline mode implementation (для работы без интернета)

💡 Лайфхак:

Добавьте Explain like I'm a junior developer, если нужно максимально простое объяснение.

А как вы настраиваете Firebase? Делитесь лайфхаками в комментариях 💬

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42😁1
📱 Вечер откровений: как вы получили работу мечты

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

Расскажите свою историю в комментариях:

– О какой работе вы мечтали?
– Как готовились к собеседованиям?
– С какими трудностями столкнулись?
– Что в итоге помогло получить оффер?


А вот вдохновляющая история от нашего подписчика:
Я годами хотел попасть в команду мобильной разработки крупного fintech-стартапа. После сотни прочитанных статей и десятка пет-проектов я наконец получил собеседование. На техническом этапе я запаниковал и забыл, как работает LiveData в Android. Но честно признался: «Сейчас не помню, но я разберусь и пришлю ответ позже». Каково же было удивление, когда мне сказали, что честность и желание учиться — именно то, что они искали! Теперь я тут работаю.


Ваш опыт важен — делитесь историями и вдохновляйте других 💬

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
9
🚀 XCUITest для начинающих

Если вы начинали автоматизировать UI-тесты под iOS, то наверняка заметили, что информации по фреймворку XCUITest в сети не так много, особенно на русском языке.

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

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

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

#cвежак
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2😁2🔥1
🚨 Смешные новости про IT теперь в одном канале

Мы запустили @hahacker_news — наш новый юмористический IT-канал.

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

👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
👨‍💻 Облегчаем поиск работы

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

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

🐸 Библиотека мобильного разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🥱41🤩1👾1
🔎 Wordsearch: узнаем, кто самый внимательный

В этой головоломке спрятаны 9 терминов из мира мобильной разработки.

Правила просты:

— Найдите 9 слов в сетке (слова идут по горизонтали)
— Напишите в комментариях, какие слова вы нашли
— Объясните один из терминов так, чтобы даже джун понял

🏆 Кто первым найдет все 9 слов и объяснит хотя бы один термин — получит почетный статус Mobile Guru на неделю!

Погнали 👇

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁21🔥1
✉️ Топ-вакансий для мобильных разработчиков за неделю

iOS Разработчик от 4000 до 8000 $, удалёнка

Flutter-разработчикдо 3 200 $, удалёнка

iOS-разработчикгибрид (Москва)

React Native разработчикгибрид (Москва)

iOS-разработчикгибрид (Новосибирск, Томск)

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

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
🛠 How to: реализовать бесконечную ленту как в TikTok

Проблема:

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

Решение:

1️⃣ Используйте RecyclerView + Paging 3 (Android)

// Настройка PagingSource
class VideoPagingSource : PagingSource<Int, Video>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, Video> {
val page = params.key ?: 0
return try {
val response = api.getVideos(page)
LoadResult.Page(
data = response.videos,
prevKey = if (page == 0) null else page - 1,
nextKey = if (response.isLastPage) null else page + 1
)
} catch (e: Exception) {
LoadResult.Error(e)
}
}
}


2️⃣ Оптимизируйте видео-плеер (iOS/Android)

🔵 Предзагрузка: Загружайте следующее видео в фоне, пока пользователь смотрит текущее
🔵 Кеширование: Сохраняйте последние 5 просмотренных видео в памяти

3️⃣ Гибридный подход к пагинации

func loadMoreVideosIfNeeded(currentIndex: Int) {
if currentIndex == videos.count - 2 { // Предзагрузка при приближении к концу
loadNextPage()
}
}


4️⃣ Ленивая инициализация плеера

val videoViews = mutableListOf<VideoView>().apply {
repeat(3) { add(VideoView(context)) } // Только 3 плеера в памяти
}


💡 Важные нюансы:

 Приоритет сети: WiFi > 5G > 4G (адаптируйте качество видео)
 Очистка ресурсов: Останавливайте воспроизведение невидимых видео
 Аналитика: Отслеживайте, какие видео досматривают до конца

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🤫 Тёмные уголки обфускации R8 и ProGuard

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

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

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

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
Инструмент недели: ProgressUI

ProgressUI — это пакет SwiftUI, реализующий легко настраиваемый круговой индикатор прогресса. Он поддерживает динамическое окрашивание в зависимости от уровня прогресса, а также предлагает несколько вариантов размеров.

Благодаря плавной анимации, этот индикатор идеально подходит для отображения процессов, состояний загрузки или индикаторов состояния в приложениях для iOS, macOS, watchOS, visionOS и tvOS.

💻 ProgressUI на GitHub

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

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