Mobile Development by AppTractor
11K subscribers
1.87K photos
39 videos
11 files
4.65K links
Цифры, советы и все интересное о разработке мобильных приложений и сервисов. Комментарии и вопросы можно писать прямо @lbogolubov

• Аудитория https://t.me/apptractor/1066
• Сайт https://apptractor.ru/
Download Telegram
На прошлой неделе появились новости о том, что Apple отправила электронные письма разработчикам, которые не обновляют свои приложения более двух лет, и угрожает удалить их, если приложения не будут обновлены в течение следующих 30 дней (позднее компания уточнила требования — три года + отсутствие загрузок — и предложила более длительный срок на обновление).

Но сколько приложений и игр может исчезнуть? Короткий ответ — много! По данным AppFigures, два года не обновлялось 752,412 приложений, созданных 260,000 уникальными разработчиками. Это очень много писем!

Сейчас в App Store 2,126,366 приложений и игр, что означает, что Apple может удалить 35% приложений.
👍2
Если вы, как и я, всегда хотели знать, как создаются тысячи уровней во всяких Candy Crush-ах, то на Reddit недавно было обсуждение. Бывший разработчик King в частности написал, что на самом деле создаются они вручную. Вот что не вручную, так это огромное тестирование и категоризация - чтобы соблюсти ту самую пресловутую пилообразную кривую сложности. И да, на самом деле в начале новой сессии игра уменьшает сложность, чтобы потрафить игроку и ввести его в поток. Это не кажется 🍭

Разработка

Обсуждение в Reddit: как в такой игре, как Candy Crush, создаются уровни?
Fleksy выпускает свой SDK для клавиатуры
Appwrite открывает фонд для поддержки проектов с открытым исходным кодом
Знай свои секреты. Поиск и автоматическая проверка секретов сторонних сервисов
Зачем ASO-специалисту работать с отзывами и как делать это правильно
7 крутых особенностей языка Dart
Полное руководство по системному дизайну 2022
Основные ошибки, которые допускают разработчики при разработке Flutter-приложения
Flutter: полная дорожная карта 2022
Subify — приложение для управления подписками — пример UI/UX
Иллюзии разработки ПО
Я заменил нативное приложение для iOS кроссплатформенным веб-приложением и никто не заметил

iOS

Apple может удалить больше 30% приложений из App Store
Возможен ли полумодальный View в SwiftUI?
Измерение производительности приложения в Swift
AR-приложение в Swift — туториал
20 лучших вопросов на собеседовании по iOS для уровня от начального до среднего

Android

Загадочная история сбоя WorkManager
Compose Animated Music Card: анимированные карточки
Kotlin, обрабатываем исключения в корутинах правильно
7 вещей, о которых нужно помнить при создании Jetpack Composable
Dagger 2 и Hilt для Android менее чем за 10 минут
Andromeda - система дизайна Jetpack Compose с открытым исходным кодом
👍4
Apple находится в центре внимания антимонопольных расследований. Сейчас в iOS 15 нашли очередной пример. Когда вы переустанавливаете приложение Apple Music из App Store, оно по умолчанию возвращается к исходному положению в доке, выкидывая при этом оттуда другие приложения.

Такое поведение было замечено Кевином Арчером. Затем пользователи попытались воспроизвести его и получили разные результаты. Некоторые сообщали, что Apple Music удаляет только сторонние приложения (а не собственные Apple). С другой стороны, некоторые пользователи обнаружили, что приложение «Музыка» также заменяет и собственные приложения компании. Помимо этого есть сообщения о том, что Apple Music снова настраивает себя в качестве музыкального проигрывателя Siri по умолчанию.

Можно предположить, что это поведение — просто ошибки, которые Apple не исправила, когда разрешила удалять системные приложения. Несмотря на это, Тим Суини из Epic Games подсуетился и уже прямо обвинил Apple в использовании преимуществ собственной ОС.
👍4
Я заменил нативное iOS-приложение кроссплатформенным веб-приложением - и никто не заметил!

Оказывается, в 2022 году для многих приложений наконец-то сбылась мечта — написать один раз и запустить где угодно. Компромисс затрат и выгод для кроссплатформенных веб-приложений всегда заключался в обмене худшей производительности на меньшее время разработки. В 2014 году для большинства приложений это был плохой компромисс. Но за последние 8 лет многое изменилось.

Перевод: https://apptractor.ru/crssnow
Платформа: кроссплатформа
👏: 1K
😁14👍8🤔5👏3
В OneSignal выпустили отчет “State of Customer Messaging 2022”, посвященный коммуникациям с пользователями. 61% респондентов заявили, что мобильные push-уведомления в настоящее время являются наиболее важным каналом для их бизнеса. Интересно, что популярность push-уведомлений не означает, что старые каналы становятся неактуальными. На самом деле, респонденты по-прежнему ставят электронную почту на второе по важности место в их продуктах. В сравнении с push-уведомления, электронная почта дольше хранится в почтовом ящике пользователя и обеспечивает больше места для контента, что делает ее хорошо подходящей для общения. Несмотря на некоторый ранний скептицизм о судьбе электронной почты в эпоху мобильных устройств, она продолжает оставаться ценным ресурсом — даже для мобильных приложений.
👍6
Если вы сомневались в том, что внедрение ATT и отказ от IDFA во многом обусловлен коммерческими мотивами, то вот вам интересная цифра - поисковая реклама в App Store в 2021 году выросла на 238% до 3.7 млрд долларов и, по прогнозам, достигнет 5.5 млрд долларов к концу этого года. Неплохая забота о конфиденциальности пользователей, правда? 😊 Собственно на волне этого успеха, Apple, как пишут, разделяет Сервисы и рекламой теперь целенаправленно будет заниматься Тодд Терези. Так что нас ждет больше рекламных продуктов.

Разработка

Apple реструктурирует Сервисы и выделяет рекламу в отдельное направление
Match Group: компания является «заложником» Google
Отчет «State of Customer Messaging 2022» от OneSignal
Самые зарабатывающие приложения США в апреле
$80 млн в Серии B: Supabase — альтернатива Firebase
Я заменил нативное iOS-приложение кроссплатформенным веб-приложением — и никто не заметил!
Podlodka #266: рекрутмент как продукт
Jugger – внедрение зависимостей как в Android
Как мы создавали движок на Unity
Зачем разработчикам игр на Unity использовать статический анализ?
10 вещей, которым я научился при проектировании децентрализованных финансовых приложений
Как «Перекрёсток» увеличил установки мобильного приложения
Если бы я мог выучить только 6 языков программирования в своей жизни, я бы выучил эти
Как стать Web3 разработчиком

iOS

Как нативно визуализировать голос в iOS
Apple Music выкидывает другие приложения из дока iOS
UIPilot: типобезопасная навигация для SwiftUI
Об архитектуре iOS-приложений
Как читать веб-сайты в SwiftUI — парсинг данных в iOS
6 советов по улучшению кода Swift
Пользовательская геометрия в SceneKit в SwiftUI
Core Data Relationship в Swift 5 — проще простого
Анимированный рейтинг в SwiftUI
Моделирование ошибок в Swift
Пишите красивый код с помощью Swift Result Builder

Android

Вышла стабильная версия Android Studio Chipmunk
PowerSpinner: выпадающие меню для Android
Android Studio. Kotlin. Подключение Google календаря через Content Provider
Хак для экономии времени при работе с Jetpack Compose
Доступность в приложении с двумя экранами
Сворачивание тулбара в Jetpack Compose - проблема, решения и альтернативы
Понимание файлов, сгенерированных Proguard, и ручная деобфускация Stacktrace
👍5🔥1
Google, конечно, навалил, будем разбираться. Вопрос в другом. Материалов столько, что уже почти каждый день подборки не влезают в стандартные посты Телеграма, приходится извращаться. Как вы относитесь к такому потоку? Нормально, нужно меньше/больше?

Разработка

Конец Продуктового менеджмента
Firebase обновляется
Представлен Flutter 3
Unity. Ленивый ECS
Flutter для Apple TV
Apple отключила оплату в App Store со счёта мобильного у «Мегафона», Yota и Tele2
Формула собеседования, благодаря которой вы получите офер FAANG/MAANG
Мой вопрос на собеседовании по программированию в Google
Никто не должен использовать резиновую уточку для отладки в 2022
Ваша история коммитов Git должна читаться как историческая книга
Почему деление на 0 не приводит к ошибке в Dart
Я прощаюсь с Firebase
Самая грустная история «Just Ship It»
Flutter и работа с нативным кодом

iOS

CHIPageControl: анимированные индикаторы страниц
5 актуальных расширений Xcode для оптимизации разработки
Создание списка для выбора с использованием дженериков
SwiftUI: выбор архитектуры приложения
Как мы используем SwiftUI в приложении Medium для iOS

Android

Новое в инструментах Android-разработки
Jetpack Compose Beta 1.2
Jetpack Compose для Wear OS
Новый Health Connect - API для безопасного доступа к данным о здоровье
Google Play запускает кастомные продуктовые страницы и события
Google Play предлагает предоплаченную подписку и снижает минимальную цену до 5 центов
Вторая бета Android 13 для всех
Google представил Pixel 6a
Google Play SDK Index
Письмо счастья: как мы разделили наши сборки для AppGallery и Google Play
Принципы S.O.L.I.D. с примерами на Kotlin
Создаем собственный плагин проверки кода IntelliJ
Надежные тесты для Android-уведомлений
👍8🔥1
Наш традиционный большой еженедельный дайджест со всеми 97 материалами за неделю. По возможности поставьте лайк, поделитесь с коллегами, поддержите на Boosty - нам важно видеть живые реакции и отклики.
👍13
Планируете переезд или остаётесь в России?

Если вы разработчик и у вас есть минута времени, поделитесь планами в анонимном опросе. Там всего 7 вопросов.

Ваши ответы помогут крупному IT-работодателю понять, в каких странах стоит открывать офисы и как условия нужны разработчикам.
😁10👍3🤔3🔥1
Раньше инвестировали в лопаты, потом в магазины для лопат, а сейчас в ремонтников магазинов для лопат. Хороший пример - Komodor, платформа поиска и исправления ошибок в Kubernetes. Так что если вы можете автоматизировать сервисы третьего порядка - IAP, поиск ошибок в контейнерах или еще что-нибудь - десятки миллионов долларов вполне могут вас дождаться 😉

Разработка

$42 млн в Серии B: Komodor — платформа устранения сбоев в Kubernetes
7 причин, по которым я объясняю ответы во время технического интервью
AppsFlyer запустил Единый источник истины для iOS
Отправляем миллиард уведомлений в месяц
Podlodka #267: кодеки
$6.6 млн в посевном раунде: Novu — открытая инфраструктура уведомлений
78% пользователей отказывается от персонализированной рекламы в App Store
55+ перспективных технологий IoT, которые вы должны иметь на своем радаре (обновление 2022 года)
Найти всё, что скрыто. Поиск чувствительной информации в мобильных приложениях
«Не унывайте, пацаны»: основатели российского приложения для медитации ещё не вышли в прибыль, но уже идут в США

iOS

6 советов, как улучшить программирование в Swift
Runestone: текстовый редактор для iOS
Асинхронный код синхронно: как устроено юнит-тестирование в СберМаркете
Правильно подключаем тяжелые зависимости к Xcode проекту через Swift Package Manager
Цикл рендеринга SwiftUI
SwiftUI все еще не готов к продакшену
Значения среды как альтернатива внедрению зависимостей в SwiftUI
Предварительная выборка в iOS
Расширенные протоколы в Swift
SwiftUI для разработчиков UIKit

Android

Android и Play на Google I/O 2022
Работа с памятью в Android: GC, ARC, RAM
Вышло расширение Google Home для Visual Studio Code
Now in Android: лучшие практики Android-разработки
Знакомьтесь: библиотека TiRecycler
Как я перестал бояться и начал делиться секретами с телефоном
В России начал работать магазин приложений NashStore — российский аналог Google Play
Каталоги версий Gradle для отличного управления зависимостями
Новый способ совершать сетевые звонки на Android
Вопросы для собеседования среднего уровня по Android
Ищем ofnsrb в UI с помощью CPU профайлера в Android Studio

Кросс

Flutter Dev Podcast #35: безопасность инфраструктуры для Flutter-разработки
Kotlin 1.5.30 и KMM/KMP
Пинболл с I/O на базе Flutter и Firebase
7 удивительных инструментов разработки приложений на Flutter,
🔥8😁1🤔1
Apple разрешает автоматически увеличивать цены на подписку

В этом году Apple уже тестировала новую функцию, позволяющую разработчикам автоматически повышать цены на возобновляемые подписки. Эта «пилотная программа» была ограничена отдельными разработчиками, а Apple теперь внедряет эти изменения для всех.

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

Есть некоторые ограничения. Главное, повышение цен не может происходить чаще, чем раз в год. При этом максимальное увеличение - на 5 долларов для обычных подписок или 50 долларов для годовых. В таких случаях Apple будет сообщать пользователям об изменении цен по электронной почте, через push-уведомления и сообщения в приложении.
🤯19😱4🔥31👍1
Как найти новые источники эффективного трафика для приложения, сохраняя бенчмарки по CPA и CAC (стоимость платящего пользователя)?

“Перекрёсток” использовал рекламу в Директе с оптимизацией на покупки в приложении.

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

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

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

Подробнее о проведенной кампании - в статье.
👍2
Интересное мнение про SwiftUI - говорят, что никак не готов он к проду. Память в Xcode утекает, старые версии iOS не поддерживаются, все еще меняется, навигация не работает и т.п. Наверняка тоже самое можно сказать и про Compose. Однако нельзя не признать, что разработка с декларативным подходом резко ускорилась и упростилась. А использовать его или нет, уже дело проекта и разработчиков. Утечки рано или поздно заштопают, версии ОС пользователи обновят, а навигацию починят.

Разработка

SwiftUI все еще не готов к продакшену
Многие софтверные компании — посмешище
Инструменты разработки и LiveOps: Как стабильно управлять тоннами контента игры
Кейс UX/UI - Drill IT
Модульные тесты замедляют меня

iOS

Apple разрешает автоматически увеличивать цены на подписку
Регулировка contentOffset с помощью UICollectionViewLayout
Создание кастомной геометрии со стандартными формами в SceneKit под SwiftUI
Разница между singleton и Singleton в Swift
Как внедрить шаблон MVVM в разработку приложений для iOS

Android

Floating Action Button Speed Dial: плавающая кнопка с действиями
Как работает UI в Android. Не все так сложно
Повышение качества кода Kotlin для кодовой базы Faire
Fastlane: автоматизируйте развертывание и выпуск бета-версий приложений для Android.

Кроссплатформа

Kotlin Multiplatform Mobile — совместное управление состоянием пользовательского интерфейса
Как на Flutter-проекте реализовать разделение Google-сервисов и Huawei-сервисов
Нестандартное оформление кнопок, текстовых полей и других элементов управления Flutter
Адаптивные макеты во Flutter
Повышает ли Flutter производительность разработчиков?
Анонс набора инструментов для казуальных игр Flutter
👍7🔥2
Используете SwiftUI/Compose в проде?
Anonymous Poll
30%
Да
42%
Нет
28%
Хочу всех посмотреть
👍4
Mobius — конференция по мобильной разработке от JUG Ru Group, в формате online+offline

Online-часть: 25–27 мая.
Offline-день: 22 июня, Санкт-Петербург.

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

Некоторые темы выступлений:
✔️ Как разработчики вернули к жизни приложение для сотрудников розничной сети МТС.
✔️ Что такое подход Dependency Injection, какие DI-фреймворки существуют и чем они могут быть полезны.
✔️ Как атрибут inlinable влияет на производительность и компиляцию кода на Swift.
✔️ Какие проблемы могут возникнуть при использовании Koin в растущем Android-приложении и как их решать.

Для подписчиков канала организаторы сделали промокод, который поможет купить персональный билет со скидкой: apptractor2022JRGpc

Билеты, подробности и полная программа уже на сайте.
Начинаем работу с Flutter Casual Games Toolkit

Если вы когда-нибудь в качестве пет-проекта хотели изучить Flutter и одновременно сделать какую-нибудь простенькую казуальную игру, то самое время. Google представил Flutter Casual Games Toolkit - специальный шаблон, который вы можете использовать для создания собственной игры. Этот стартовый проект предоставляет готовые «Свистелки и перделки», такие как главное меню, страница настроек, поддержку звука и т.д. К нему же прилагаются несколько примеров игр (пинбол и крестики-нолики), собственный открытый игровой движок (он существует еще с версии 2.8), видео туториал, обсуждение в Discord для разработчиков игр на Flutter.

Статья: https://apptractor.ru/fltgmkt
Платформа: Flutter
👍5🤩2🤔1
Mattt — разработчик, бывший технический писатель Apple, контрибьютор Swift, мантейнер Alamofire и AFNetworking, основатель NSHipster, выложил книги своего издательства Flight School. Там есть руководство по строкам, числам и Codable в Swift. Навскидку - большие (про строки, например, 173 страниц) подробные и интересные издания о том, как все в Swift происходит. Так что если хотите выйти за пределы let name = "Swift" - посмотрите 📖 По крайней мере получите удовольствие от оформления 😀

Разработка

Бесплатные книги по Swift от Flight School
$20 млн: Pipedream — простая интеграция API
MyTracker открывает возможность для создания кастомизированных метрик
VPS и ARCore Geospatial API
Kincony KC868-A16: контроллер 16-го уровня
Подборка новых, необычных и стильных мобильных iOS приложений
Минцифры и VK анонсировали запуск магазина Android-приложений RuStore
Как я выторговал офер в 300 000 от Google
Прекратите создавать UI компоненты с нуля
Системный дизайн и рекомендательные алгоритмы 20 крупных компаний

iOS

Sankey: диаграммы Санки для iOS
Apple представила новые функции доступности
Золотые правила “weak self”
Pull to refresh в SwiftUI
Заполнители типов взгляд на новую функцию Swift 5.6
Фингерпринтинг локального устройства в iOS
Туториал по Vision Framework для iOS: обнаружение контуров

Android

Jetpack Compose для поздних последователей
Кастомные анимации Canvas в Jetpack Compose
Оставьте Retrofit, переходите на Ktor в Android

Кроссплатформа

Начинаем работу с Flutter Casual Games Toolkit
Flutter каналы платформы
Воркшопы DartPad от GDE по Flutter
Оптимизируем React Native
Ускоряем Kotlin Multiplatform
👍6
Занятное исследование поиска приложений различных категорий в Google. Без предыстории за предыдущие года трудно оценить положение, но дейтинг на первом месте. После пандемии, видимо, все снова бросились знакомиться. Что менее ожидаемо - на втором месте по частоте запросов приложения для торговли акциями. Статистика мировая, так что игра на бирже, судя по всему, стала уже мировым хитом. Фоторедакторы в эпоху Инстаграмов и Тиктоков на третьем. Игры только на четвертом, но это видимо уже перекос именно в поисковую статистику категорий, мало кто ищет “game apps”.

Разработка

Самые популярные категории приложений 2022
Мой вопрос с кодинг интервью в Google
VK открывает набор на оплачиваемую стажировку для начинающих разработчиков игр
Facebook замораживает найм в продуктовые команды
Как выжить при быстром росте аудитории, когда игра за день становится хитом
Эволюция инди-игры: от Google Play до собственного магазина
Мобильный маркетинг в 2022: спасибо, что живой
Что не так с UX-ом подписок
26 главных вопросов по программированию, которые помогут пройти собеседование в Microsoft
Я потратил 2 года на запуск крошечных проектов

iOS

Соединяем iOS AppDelegate, SceneDelegate и ViewController
Шаблон Xcode MVVM-C для сокращения времени разработки
Заполнители типов: взгляд на новую функцию Swift 5.6
7 шорткатов Xcode для больших проектов
Apple GPU и невозможная ошибка

Android

MiStoryView: истории для Android-приложения
Делаем Android-приложение библиотечным модулем
Девять кругов ада в миграции проекта Kotlin Multiplatform на koin-annotations
Используете ли вы самый мощный инструмент Kotlin?
API сканирования штрихкодов Google - сканирование кодов без разрешения камеры

Кроссплатформа

Тестирование Flutter-приложений: гайд по разработке тестов на Flutter
Flutter 3: что нового
Автоматический перевод приложения Flutter
👍2🤯1
Всегда хотели сравнить производительность своей команды разработки с конкурентами? Теперь есть такая возможность. Платформа управления программной инженерией Jellyfish запустила то, что она называет «первым в отрасли инструментом сравнительного анализа». Он позволит инженерам проверять, насколько хорошо они работают по сравнению с другими компаниями. Jellyfish Benchmarks основан на анонимизированных данных, которые компания собирает со всех инженерных групп.

Пользователи получают доступ к более чем 50 метрикам, включая время, затрачиваемое на рост, количество решенных issues, частота развертывания, смердженные пул-реквесты, коммиты, дни программирования, частота инцидентов, среднее время восстановления (MTTR), и пр.

Такие агрегированные общеотраслевые инженерные данные дают больше контекста для понимания, позволяя компаниям сравнивать и сопоставлять внутренние данные с данными своих коллег из разных секторов.
👍9🤔1