tgoop.com »
United States »
Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck » Telegram Web
Хотите удерживать пользователей с помощью своевременных уведомлений, но не знаете, с чего начать? Этот промпт поможет настроить отправку пушей быстро и эффективно.
Implement push notifications for a mobile app that includes:
— Set up Firebase Cloud Messaging (FCM) for Android and APNS for iOS
— Configure notification channels and categories
— Handle notification permissions and user opt-in flow
— Implement deep linking from notifications
— Manage notification grouping and summary
— Add analytics for notification engagement
— Handle foreground/background notification delivery
— Добавьте
Implement rich notifications with images and actions
для интерактивных уведомлений— Добавьте
Set up geofencing and trigger-based notifications
для персонализированных сообщений— Добавьте
Create notification scheduling system
для отложенных уведомлений#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10
Используемые приёмы не только способствуют более оперативному выявлению ошибок, но и помогают разработчикам глубже понимать код, создавать более надежные приложения и, что немаловажно, получать больше удовлетворения от процесса разработки.
func calculateScore() {
print("Начало расчета") // ← Лишний шум
// Код...
print("Результат: \(score)") // ← Забудете удалить
}
1. Умные точки останова
• Условные: срабатывают только при
user.age < 18
• С действиями: логируют без остановки выполнения
• Символьные: ловят все вызовы
viewDidLoad
в проекте2. Команды LLDB (в консоли Xcode):
(lldb) po user.name // Вывести значение
(lldb) expr user.age = 25 // Изменить переменную на лету
(lldb) thread backtrace // Показать весь стек вызовов
3. 3D-отладка интерфейса
Кнопка «Debug View Hierarchy» показывает слои UI в 3D — находите незаметные баги за секунды.
4. Логирование через OSLog (вместо print):
import os.log
let log = Logger(subsystem: "com.youapp", category: "network")
log.debug("Загрузка данных...") // Автоматически скрывается в продакшене
5. Instruments — для сложных багов:
• Allocations: ищет утечки памяти
• Time Profiler: находит тормозящие методы
Настройте условную компиляцию для отладочного кода:
#if DEBUG
// Этот код исчезнет в продакшене
validateData()
#endif
Итог: Забудьте о print(). Используйте точки останова + LLDB + Instruments. Это в 10 раз быстрее и не засоряет код.
Какой ваш главный инструмент отладки? Делитесь в комментариях
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
📅 24 сентября в 19:00 МСК — бесплатный вебинар с Максимом Шаланкиным.
Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».
🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.
Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏
👉 Регистрируйтесь через форму на лендинге
Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».
🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.
Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏
👉 Регистрируйтесь через форму на лендинге
😁1
Выбор между локальной разработкой и облачной средой зависит от характера проекта, бюджета на оборудование и личных предпочтений. Оба подхода имеют свои преимущества и недостатки, и выбор зависит от задач, для которых используется среда.
Что предпочитаете вы? Голосуйте и пишите своё мнение в комментариях
❤️ — локально
👍 — в облаке
🤝 — гибрид
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🤝4👍2
Вот пять небольших трюков, которые незаметно избавят вас от ненужных элементов, придав коду вашего приложения элегантный вид.
Вместо бесконечных операторов
if let
создайте простое расширение, которое сделает обработку опциональных параметров естественной:extension View {
@ViewBuilder
func ifLet<T, Content: View>(_ value: T?, content: (T) -> Content) -> some View {
if let value {
content(value)
} else {
self
}
}
}
Теперь вы можете просто писать:
Text("Hello")
.ifLet(username) { Text("Welcome, \($0)") }
Мы все пишем
.padding()
или .opacity()
с условиями. Вместо того, чтобы заключать целые представления в блоки if, используйте это:extension View {
@ViewBuilder
func apply(_ condition: Bool, modifier: (Self) -> some View) -> some View {
if condition {
modifier(self)
} else {
self
}
}
}
Использование:
Text("Premium")
.apply(isPro) { $0.foregroundColor(.yellow) }
Одна строка, ничего лишнего.
Загрузка изображений — обычное дело, но повторение одной и той же логики плейсхолдера утомляет. Сделайте один раз:
struct RemoteImage: View {
let url: URL
var body: some View {
AsyncImage(url: url) { phase in
switch phase {
case .success(let image): image.resizable().scaledToFit()
case .failure(_): Color.gray
case .empty: ProgressView()
@unknown default: EmptyView()
}
}
}
}
Теперь вам больше не придётся переписывать загрузчики изображений.
Вместо того, чтобы создавать DateFormatter везде, добавьте расширение:
extension Date {
func formatted(_ style: DateFormatter.Style = .medium) -> String {
let formatter = DateFormatter()
formatter.dateStyle = style
return formatter.string(from: self)
}
}
Использование:
Text(Date().formatted(.long))
Легко читаемый и многоразовый код.
Не любите бороться с
.ignoresSafeArea()
? Добавьте небольшой вспомогательный метод:extension View {
func fillScreen() -> some View {
self.frame(maxWidth: .infinity, maxHeight: .infinity)
.ignoresSafeArea()
}
}
Теперь для каждого полноэкранного представления требуется всего один модификатор.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🥱3👍2👏1🤔1
👾 Визуализация рекомпозиций в Jetpack Compose
Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать.
Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI.
В этой статье автор расскажет о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
👉 Читать статью
🐸 Библиотека мобильного разработчика
#свежак
Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать.
Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI.
В этой статье автор расскажет о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
⚡️ Бесплатный вебинар — ИИ-агенты: новая фаза развития AI
24 сентября в 19:00 МСК состоится бесплатный вебинар с Максимом Шаланкиным — Data Science Team Lead в финтех-команде MWS, а познакомиться с ним ближе можно в его тг-канале.
Тема:
На вебинаре разберёмся, почему агенты — это следующий шаг после ChatGPT, чем они отличаются от обычных моделей и как уже приносят бизнесу ROI до 80%. А дальше я покажу, как эта тема ложится в наш курс по ИИ-агентам, который разработан под руководством Никиты Зелинского.
Подробности рассказываем в гс выше — включай, чтобы не пропустить.
24 сентября в 19:00 МСК состоится бесплатный вебинар с Максимом Шаланкиным — Data Science Team Lead в финтех-команде MWS, а познакомиться с ним ближе можно в его тг-канале.
Тема:
«ИИ-агенты: новая фаза развития искусственного интеллекта».
На вебинаре разберёмся, почему агенты — это следующий шаг после ChatGPT, чем они отличаются от обычных моделей и как уже приносят бизнесу ROI до 80%. А дальше я покажу, как эта тема ложится в наш курс по ИИ-агентам, который разработан под руководством Никиты Зелинского.
Подробности рассказываем в гс выше — включай, чтобы не пропустить.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22
Какая версия Swift представила concurrency (async/await)?
Anonymous Quiz
24%
Swift 4
65%
Swift 5.5
8%
Swift 3
3%
Swift 2
Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
В статье сосредоточимся на механизмах приведения типов и создания дженериков в Swift Runtime, а также рассмотрим конкретный метод, критичный для производительности. Разберем на примерах, когда и почему он вызывается, как влияет на отзывчивость приложения и какие стратегии использовать для оптимизации.
Каждый, кто писал или пишет приложения на этом языке, так или иначе работает со строками. Но задумывались ли вы когда-нибудь, как они устроены внутри? В этой статье автор приоткроет завесу и расскажет, какие тайны скрывают строки в Swift.
Давайте разберёмся, что на самом деле означает это изменение, почему это хорошо, и разберём чёткий трёхэтапный план подготовки вашего приложения.
Арсений Носов, Android-разработчик в команде Алисы и Умных устройств, тщательно разбирает код и делится полезными советами по работе с ним.
В этой статье автор разберёт, как RenderObject появляются на свет, какие задачи решают, зачем может понадобиться создание собственных RenderObject, а также рассмотрит процесс создания собственного RenderObject с примерами и без танцев с бубном.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Свойства класса — это переменные, которые хранят состояние объекта класса. Как и любая переменная, свойство может иметь тип, имя и значение.
В классе можно объявить свойства с помощью ключевого слова
var
или val
. Свойства, объявленные с var
, могут быть изменены после их инициализации, а свойства, объявленные с val
, только для чтения.class Person {
var name: String = ""
val age: Int = 0
}
При создании своего класса мы хотим сами управлять его свойствами, контролируя то, какие данные могут быть предоставлены или перезаписаны. С этой целью создаются get и set методы (геттеры и сеттеры). Цель get-метода — вернуть значение, а set-метода — записать полученное значение в свойство класса.
var name: String = ""
get() = field.toUpperCase()
set(value) {
field = "Name: $value"
}
В данном примере свойство
name
имеет тип String
и начальное значение пустой строки. Геттер возвращает значение свойства, преобразованное к верхнему регистру. Сеттер устанавливает значение свойства с добавлением префикса "Name: "
перед переданным значением. Слово field
используется для обращения к текущему значению свойства.Если get и set методы не были созданы вручную, то для таких свойств Kotlin незаметно сам их генерирует. При этом для свойства, объявленного с
val
, генерируется get-метод, а для свойства, объявленного с var
— и get, и set методы.#буст #JuniorKit #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
В iOS 18 в SwiftUI появились liquid glass-стили — полупрозрачные, «стеклянные» кнопки и элементы.
Обычная кнопка:
Button("Add", action: addItem)
— рисуется в стандартном системном стиле.
Если применить
.glass
:Button("Add", action: addItem)
.buttonStyle(.glass)
кнопка получает эффект стекла, глубину и анимацию нажатия. Цвет можно задать через .tint, но система полностью контролирует размеры и отступы.
Есть вариант
.glassProminent
для основных действий, но пока он не работает в Xcode 26.0 beta.Отдельно существует модификатор
.glassEffect()
, который можно применить к любому виду:Text("Hello")
.padding()
.glassEffect()
Это просто придаёт представлению полупрозрачный фон, без анимаций и встроенного стиля — всё остальное нужно оформить вручную.
В
Toolbar
многие кнопки автоматически получают стеклянный стиль, особенно в слотах подтверждения или отмены, и отключить это пока нельзя.Стоит отметить, что стеклянные кнопки не заменяют пользовательские
ButtonStyles
. Если нам нужны фирменные кнопки для конкретного приложения или динамические кнопки, внешний вид которых зависит от состояния, то пользовательские стили по-прежнему будут подходящим инструментом. Но если мы хотим использовать системный внешний вид и соответствовать развивающейся эстетике Apple, то стеклянные стили — это быстрый способ добиться желаемого.
А вы уже использовали .glass или .glassEffect()? Делитесь впечатлениями в комментариях
#MiddlePath #SwiftUI #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Тёмная тема стала массовым трендом в 2018–2020 годах, когда её начали добавлять все крупные приложения. Тогда это выглядело как свежий и технологичный ход, который отличал продукт на фоне конкурентов. К тому же производители смартфонов активно продвигали OLED-дисплеи, для которых тёмный режим реально экономил заряд.
Тёмная тема стала частью пользовательского ожидания. Даже те, кто ею не пользовался, считали её обязательной опцией для современного сервиса. UX-дизайнеры включали её в брифы «по умолчанию», а маркетологи записали в «признак заботы о пользователе».
А как считаете вы, обязательна ли тёмная тема в приложении? Голосуйте и пишите своё мнение в комментариях
❤️ — обязательна
👍 — необязательна
#междусобойчик #AllLevels
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍7😁2
🔥 Не пропустите событие осени для AI-комьюнити
24 сентября, 19:00 Мск — бесплатный вебинар с Максимом Шаланкиным «ИИ-агенты: новая фаза развития искусственного интеллекта»
😤 Пока все спорят, «боты это или нет», мы покажем, как работают настоящие агенты: с планированием, инструментами и памятью. За час Максим разберёт:
— почему ИИ-агенты сейчас на пике инвестиций
— чем они отличаются от ChatGPT и обычных моделей
— цикл агента: восприятие → планирование → действие → обучение
— живое демо простого агента
— как бизнес уже получает ROI до 80%
⚡️ Хотите спросить у Максима всё, что обычно остаётся «за кадром»? Ловите шанс — только в прямом эфире.
⏰ Мест мало, регистрация закроется, как только забьём комнату
24 сентября, 19:00 Мск — бесплатный вебинар с Максимом Шаланкиным «ИИ-агенты: новая фаза развития искусственного интеллекта»
😤 Пока все спорят, «боты это или нет», мы покажем, как работают настоящие агенты: с планированием, инструментами и памятью. За час Максим разберёт:
— почему ИИ-агенты сейчас на пике инвестиций
— чем они отличаются от ChatGPT и обычных моделей
— цикл агента: восприятие → планирование → действие → обучение
— живое демо простого агента
— как бизнес уже получает ROI до 80%
⚡️ Хотите спросить у Максима всё, что обычно остаётся «за кадром»? Ловите шанс — только в прямом эфире.
⏰ Мест мало, регистрация закроется, как только забьём комнату
Мобильный разработчик (React Native/другие) — от 150 000 до 350 000 ₽, удалёнка
Senior iOS Developer (Swift) — удалёнка
Flutter разработчик — до 370 000 ₽, удалёнка
iOS Developer — до 2 000 $, удалёнка
Мобильный разработчик (Flutter) — от 90 000 до 120 000 ₽, удалёнка
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Шаблон MVC предполагает разделение кода на 3 компонента. При создании класса/файла приложения разработчик должен отнести его к одному из следующих трёх уровней:
🔹 Модель:
Этот компонент хранит данные приложения. Он ничего не знает об интерфейсе. Модель отвечает за обработку логики предметной области (реальных бизнес-правил) и взаимодействие с базой данных и сетевыми уровнями.
🔹 Представление:
Это слой пользовательского интерфейса (UI), в котором содержатся компоненты, видимые на экране. Кроме того, он обеспечивает визуализацию данных, хранящихся в модели, и позволяет пользователю взаимодействовать с ними.
🔹 Контроллер:
Этот компонент устанавливает связь между Представлением и Моделью. Он содержит основную логику приложения, получает информацию о действиях пользователя и обновляет Модель в соответствии с потребностями.
Несмотря на применение схемы MVC для модульного проектирования приложения, уровни кода зависят друг от друга. В этом шаблоне Представление и Контроллер зависят от Модели. Для применения шаблона MVC в проекте можно использовать несколько подходов:
В MVC данные обновляет контроллер, а представление их только отображает. Модель отделена и тестируется независимо от UI. Если представление соблюдает принцип единой ответственности — лишь передаёт действия контроллеру и показывает данные без бизнес-логики — то его достаточно проверять UI-тестами.
#буст #SeniorView #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8
Хотите быстро отследить, что происходит в приложении на устройстве или эмуляторе?
На помощь приходит простая команда:
adb logcat | grep "MyTag"
— Подключается к логам Android-устройства или эмулятора
— Фильтрует вывод по тегу (например,
MyTag
, который вы используете в Log.d(...)
)— Показывает только нужные строки, чтобы не тонуть в море системных логов
— Нужно быстро найти крэш или баг прямо на реальном устройстве
— Хотите дебажить только свою часть логов, а не весь Android-спам
— Проверяете работу логирования перед релизом
Добавьте уровни логов для фильтрации:
adb logcat *:E # только ошибки
adb logcat *:W # предупреждения и выше
adb logcat
в работе?#буст #JuniorKit #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
🧗 Кто такие Unit-лид и Technical Owner — и почему эти роли нужны в IT-командах
Когда компания переходит от «сделать и забыть» к «развивать и совершенствовать», старые роли перестают работать. Нужны люди, которые будут жить продуктом, а не просто выполнять задачи. Unit-лид и Technical Owner — именно такие специалисты. Объясняем, что они делают и почему без них продуктовый подход обречен на провал.
👉 Читать статью
🐸 Библиотека мобильного разработчика
#MadeInProglib
Когда компания переходит от «сделать и забыть» к «развивать и совершенствовать», старые роли перестают работать. Нужны люди, которые будут жить продуктом, а не просто выполнять задачи. Unit-лид и Technical Owner — именно такие специалисты. Объясняем, что они делают и почему без них продуктовый подход обречен на провал.
#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3