Реалізація міні-плеєра (Mini Player) в мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація міні-плеєра (Mini Player) в мобільному додатку
Середній
від 1 дня до 3 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Реалізація мініплеєра в мобільному застосунку

Міні-плеєр — смужка із назвою треку, кнопками play/pause та прогрес-баром, яка залишається видимою при навігації між екранами. Виглядає просто, але технічно упирається в архітектуру навігації: плеєр повинен жити поза конкретним екраном та не пересоздаватися при переходах.

Архітектурне рішення

Міні-плеєр — не екран, а persistented overlay поверх всього застосунку. Спосіб розміщення залежить від навігаційної системи.

iOS (UIKit). Додаємо міні-плеєр в UITabBarController або UIWindow — він живе на рівні контейнера, не конкретного ViewController. Обмеження: UITabBar займає нижню частину, міні-плеєр розміщуємо прямо над ним, зрушуючи additionalSafeAreaInsets.bottom у всіх VC у табі.

// У користувацькому UITabBarController
override func viewDidLoad() {
    super.viewDidLoad()
    miniPlayerView = MiniPlayerView()
    view.addSubview(miniPlayerView)
    NSLayoutConstraint.activate([
        miniPlayerView.bottomAnchor.constraint(equalTo: tabBar.topAnchor),
        miniPlayerView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        miniPlayerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
        miniPlayerView.heightAnchor.constraint(equalToConstant: 64)
    ])
    // Зрушуємо safe area для дочірніх VC
    additionalSafeAreaInsets.bottom = 64
}

iOS (SwiftUI). ZStack у кореневому ContentView із TabView внизу та міні-плеєром поверх через .overlay(alignment: .bottom). Стан плеєра — @EnvironmentObject або @ObservedObject синглтон.

Android (Jetpack Compose). Міні-плеєр у кореневому Scaffold як bottomBar, або через Box поверх NavHost. Стан через ViewModel на рівні NavGraph — переживає навігацію між екранами.

React Native. Компонент міні-плеєра у кореневому App.tsx поверх навігатора. position: 'absolute', bottom: tabBarHeight + жест свайпа вверх для розворачування.

Expand/Collapse анімація

Міні-плеєр повинен розворачуватися в повноекранний плеєр по тапу або свайпу вверх.

iOS. UIPanGestureRecognizer + UIViewPropertyAnimator з interruptibleAnimator. При проміжних станах — fractionComplete анімується пропорційно смішенню пальця. Apple Music робить саме так: повноекранний плеєр — це sheet з detents, міні-плеєр — користувацький presentationController.

Android Compose. BottomSheetScaffold або ModalBottomSheet з користувацькими sheetPeekHeight та sheetContent. При peekHeight — міні-плеєр, при розвернутому стані — повний.

Синхронізація стану

Прогрес-бар, назва треку, обложка — все це повинно оновлюватися в реальному часі незалежно від того, на якому екрані користувач. Єдиний джерело правди — PlayerViewModel / AudioPlayerManager як синглтон з @Published (iOS) або StateFlow (Android). Міні-плеєр підписується на нього, не зберігає локального стану.

Жести та доступність

Свайп вниз на розвернутому плеєрі — закрити/сворнути в міні. Реалізуємо через UIPanGestureRecognizer (iOS) з пороговим значенням translation.y > 100 для підтвердження дії. При неповному свайпу — UIViewPropertyAnimator повертає в вихідне стан.

На Android Compose — swipeable (із accompanist) або anchoredDraggable (Compose 1.6+) з якорями COLLAPSED / EXPANDED. При швидкості жесту > 1000 dp/s — немедленний перехід без анімації.

VoiceOver/TalkBack: міні-плеєр повинен мати accessibilityLabel із поточним треком та accessibilityHint «Натисніть для відкриття повного плеєра». Кнопка паузи в міні-плеєрі — окремий accessibilityElement.

Орієнтири за часом

Міні-плеєр з expand-анімацією на одній платформі — 2–3 дні. Обі платформи з жестовим управлінням — 3–4 дні.